流星不能更新mongo?
我有一个奇怪的问题是代码将不会在我的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");
我们遇到了您的问题!您当前的权限不允许您更新文档。因此,您可以添加一些逻辑来查找文档ID,并通过该ID选择它,或者可以修改权限。出于安全目的,如果明确推荐第一条路线而不是第二条路线。
模板:
<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}});
}
});
不幸的是,这似乎不能解决问题。我认为问题在于实际更新语句,然后是值,因为'resources.update({system:“booster1”},{$ set:{output:20}});'不起作用。尽管谢谢你的回答。 –
在哪里/你是如何定义 “资源”?如果您没有正确定义,发布和订阅数据库,则可能会看到一些问题。这将解释为什么它在mongo中有效,但不在客户端js中。
我在另一个名为database的.js文件中定义我的资源,位于我的lib文件夹中。我会发布上面的代码。 –
@IanWise你可以尝试添加一些东西到插入语句?添加此更新电话? 'resources.update({system:“booster1”},{$ set:{output:10}},function(err,res){console.log(err || res)});' –
当我添加到我的代码,我的控制台中出现以下错误:'错误:不允许。不受信任的代码只能通过ID更新文档。 [403]' –
它会抛出任何错误?还是只是没有更新? –
@TimC我的JavaScript在该行冻结,并且不会完成任何行。所以问题在于实际的更新语句本身。但就我的流星终端而言,它不会带来任何错误。 –
如果使用字符串作为键('“system”'而不是'system'),会发生什么? – royhowie