2014-02-10 59 views
0

參數在發現流星書,使用了否認聲明如​​下: https://github.com/DiscoverMeteor/Microscope/commit/chapter8-3允許和拒絕在藏品

Posts.deny({ 
    update: function(userId, post, fieldNames) { 
    ..... 
}); 

我不明白的更新功能是如何獲得用戶ID,郵寄,甚至字段名因爲編輯表格正在執行以下操作:

var postProperties = { 
      url: $(e.target).find('[name=url]').val(), 
      title: $(e.target).find('[name=title]').val() 
     } 

     Posts.update(currentPostId, {$set: postProperties}, function(error) { 

回答

1

這些參數由Meteor提供。客戶端和deny對象上的更新函數簽名是不同的。

http://docs.meteor.com/#allow

update(userId, doc, fieldNames, modifier)

userId要 更新文檔doc用戶。 (doc是來自數據庫的文件 的當前版本,沒有建議更新。)返回true以允許 發生更改。

fieldNames是(頂層)的陣列中doc字段,該客戶端 想要修改,例如['name', 'score']

modifier是客戶端想要執行的原始Mongo修飾符;例如, ,{$set: {'name.first': "Alice"}, $inc: {score: 1}}

只支持Mongo修飾符(類似於$set$push的操作)。 如果用戶試圖替換整個文檔而不是使用$ --modifiers,則請求將被拒絕,而不檢查allow 函數。

1

簡而言之,這些值是由流星填寫的。它瞭解誰在對哪個文檔進行哪些修改並告訴服務器。

客戶端被調用Posts.update,它發送一個消息到userId試圖更新文檔(其內容是post)服務器,被更新的字段是fieldNames。然後服務器可以根據這些輸入選擇接受更新。

這記錄在herehere

相關問題