2015-05-09 318 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]' –