2015-04-05 89 views
0

我試圖觸發客戶端方法中的更新(思後進入服務器)如​​下:流星collection.update沒有更新文件

Meteor.methods({ 
    // Calling this and passing in a currentSelected value = "avatar" on click 
    'updateSelectedDocument' : function(currentSelected) { 
     var current = LayoutVariations.findOne({elementID: currentSelected}); 
     var index = current.currentIndex; 
     myCollection.update({_id :current._id}, {currentIndex: 2}); 
    } 
}); 

的.update應該找到該文件並更新文檔的currentIndex屬性,它是一個整數。

我在控制檯通過傳入_id(例如「GRvujvgBEmem3Dp3d」)來運行myCollection.update({_id :current._id}, {currentIndex: 2});,它可以工作。當我在方法中調用它時,它不會更新,也不會引發任何錯誤。

想知道可能是什麼問題。

回答

0

使用$set運營商在更新指定的更換現場currentIndex的價值:

Meteor.methods({ 
    // Calling this and passing in a currentSelected value = "avatar" on click 
    'updateSelectedDocument' : function(currentSelected) { 
     var current = LayoutVariations.findOne({elementID: currentSelected}); 
     var index = current.currentIndex; 
     myCollection.update({_id :current._id}, {$set: { currentIndex: 2 } }, function(error, affectedDocs) { 
      if (error) { 
       throw new Meteor.Error(500, error.message); 
      } else { 
       return "Update Successful"; 
      } 
     }); 
    } 
}); 
+0

感謝您的回答。我試過'$ set'運算符。但是我看到了同樣的行爲。運行'myCollection.update({_ id:current._id},{$ set:{currentIndex:2}});'(用實際的_id)返回1並更新文檔。但是從函數內部更新它似乎並沒有更新數據庫中的文檔。 – Poyi 2015-04-05 22:42:17

+0

你在哪裏調用客戶端的方法'Meteor.call(「updateSelectedDocument」,function(error,result){...});'? – chridam 2015-04-05 22:47:04

+0

只是一個模板點擊事件'' Template.frame.events({ '點擊按鈕':函數(){ Meteor.call( 'updateSelectedDocument',currentSelected);} });內'' 我只是將該方法移入服務器(「服務器」文件夾下的文件)。它似乎正確更新。看起來CRUD方法只適用於服務器端呢? – Poyi 2015-04-05 23:01:27