2012-12-16 66 views
3

我找不到文檔中的任何內容,但如果我錯過了某些內容,有沒有什麼方法可以讓Meteor在客戶端發送到Mongo之前從服務器上的客戶端編輯文檔insert當從客戶端插入時,在Meteor服務器端豐富Mongo文檔?

此用例用於處理諸如設置時間戳和其他(僅用於服務器端使用)字段的內容,而不必將它們設置爲客戶端上文檔的一部分。

最明顯的方法是使用Meteor.call('addMyNewRecord', publicFields)然後insert僅僅從服務器端,但我很喜歡有在客戶端的minimongo API,我希望避免call要求。我知道在CouchDB中你可以在他們的on-update處理程序中做一些基本的修改,但似乎找不到與Meteor/Mongo類似的東西。

回答

2

我終於找到a nice approach這樣做,同時仍然在客戶端使用minimongo接口。

似乎可以攔截insert和豐富的文件爲Deny政策的一部分,就像這樣:

myCollection.deny({ 
     insert: function(userId, doc) { 
      doc.created = new Date().valueOf(); 
      doc.creator = userId; 
      //other default fields 
      return false; 
     } 
    }); 

我試圖做類似與update拒絕政策,以增加modified場,但這似乎沒有以同樣的方式工作。如上面鏈接的帖子所述,這不適用於Allow政策。

+1

不錯的發現。這有點破解。我添加了一個功能請求,爲此添加了一些內容。 –