2015-05-09 90 views
2

我有一个奇怪的问题是代码将不会在我的JavaScript运行下面的线,但是运行在-meteor蒙戈终端精细流星不能更新mongo?

resources.update({system : "booster1"},{$set:{output : 10}}); 

有人知道为什么这不会在JavaScript中工作,但会在终端工作?

这里是

Template.FDO.events({ 
    'change #booster1OutputSlider': function(){ 
     var value = $('#booster1OutputSlider').val(); 
     resources.update({system : "booster1"},{$set:{output : value}}); 
    } 
}); 

我已经测试值,以确保它返回一个可用的变量我的代码的其余部分,它只是因为它应该。

= = = = = = = = = = = = = = = = = = = = = = = [编辑] = - 我的资源集合是在另一个.js文件中定义的。我的资源集合是在另一个.js文件中定义的。我的资源集合是在另一个.js文件中定义的。在我的lib文件夹中。为此代码如下:

resources = new Meteor.Collection("Resources"); 
+0

它会抛出任何错误?还是只是没有更新? –

+0

@TimC我的JavaScript在该行冻结,并且不会完成任何行。所以问题在于实际的更新语句本身。但就我的流星终端而言,它不会带来任何错误。 –

+0

如果使用字符串作为键('“system”'而不是'system'),会发生什么? – royhowie

回答

1

我们遇到了您的问题!您当前的权限不允许您更新文档。因此,您可以添加一些逻辑来查找文档ID,并通过该ID选择它,或者可以修改权限。出于安全目的,如果明确推荐第一条路线而不是第二条路线。

0

模板:

<template name="FDO"> 
    <input name="myInput" type="text" /> 
</template> 

JS:

Template.FDO.events({ 
    'change [name="myInput"]': function(event, template){ 
     var value = event.target.myInput.value; 
     resources.update({system : "booster1"},{$set:{output : value}}); 
    } 
}); 
+0

不幸的是,这似乎不能解决问题。我认为问题在于实际更新语句,然后是值,因为'resources.update({system:“booster1”},{$ set:{output:20}});'不起作用。尽管谢谢你的回答。 –

1

在哪里/你是如何定义 “资源”?如果您没有正确定义,发布和订阅数据库,则可能会看到一些问题。这将解释为什么它在mongo中有效,但不在客户端js中。

+0

我在另一个名为database的.js文件中定义我的资源,位于我的lib文件夹中。我会发布上面的代码。 –

+0

@IanWise你可以尝试添加一些东西到插入语句?添加此更新电话? 'resources.update({system:“booster1”},{$ set:{output:10}},function(err,res){console.log(err || res)});' –

+0

当我添加到我的代码,我的控制台中出现以下错误:'错误:不允许。不受信任的代码只能通过ID更新文档。 [403]' –