我試圖在集合更新後運行某些插入語句。例如,如果用戶將嵌入文檔位置添加到他們的用戶文檔,我想也將該嵌入文檔插入到單獨的位置集合中。有沒有辦法在服務器端做到這一點,以確保操作運行?如何在保存流星之前更改對象服務器端
回答
你需要做的的方法..你可以通過實現客戶端的方法存根保持延遲補償:
調用客戶端的方法定義了的 服務器方法相關聯的存根功能一樣的名字。如果你不想要,你不必爲你的方法定義一個存根(stub) 。在這種情況下,方法調用只是 ,就像其他系統中的遠程過程調用一樣,您將不得不等待 以獲取服務器的結果。
如果你確實定義了一個存根,當一個客戶調用一個服務器方法時, 也會並行地運行它的存根。在客戶端上, 存根的返回值將被忽略。存根以其副作用運行:它們是 ,旨在模擬服務器方法將執行的操作的結果, 但不等待往返延遲。如果存根引發異常,它將被記錄到控制檯。
在這裏看到我的流星存根例如:https://stackoverflow.com/a/13145432/1029644
你有沒有例子說明如何實現上述存根?我正在看StackOverflow上的一些例子,例如[this one](http://stackoverflow.com/questions/12231712/when-to-use-meteor-methods-and-utilizing-stubs),但我仍然有點困惑至於如何實現這一點。 – HGandhi
如果你願意使用一些代碼,我寫的(https://gist.github.com/matb33/5258260),你可以連接在像這樣:
編輯:代碼現在是部分在https://github.com/matb33/meteor-collection-hooks
var test = new Meteor.Collection("test");
if (Meteor.isServer) {
test.before("insert", function (userId, doc) {
doc.created = doc.created || Date.now();
});
test.before("update", function (userId, selector, modifier, options) {
if (!modifier.$set) modifier.$set = {};
modifier.$set.modified = Date.now();
});
test.after("update", function (userId, selector, modifier, options, previous) {
doSomething();
});
}
- 1. 更改流星服務器
- 2. 如何在保存之前檢查服務器上的更改集數據?
- 3. 流星setInterval在服務器端
- 4. 如何使用NodeJS保護/存儲對象服務器端?
- 5. 在客戶端或服務器端更改對象
- 6. 僅保存服務器上已更改的對象:Restful service + angularjs
- 7. 如何在使用流星和流星時監控服務器端日誌
- 8. TYPO3/Extbase - 如何在驗證/保存對象之前修改值?
- 9. 如何綁定客戶端對象上的服務器端事件,反之亦然使用流星
- 10. 前臺服務保留內存對象
- 11. 流星觀測陣列服務器端
- 12. 服務器端setInterval/clearInterval與流星
- 13. 流星廚房服務器端渲染
- 14. 流星服務器端js兼容性
- 15. 流星,客戶端和服務器
- 16. 需要jQuery的流星服務器端
- 17. 流星自動完成服務器端
- 18. 流星服務器端HTTP請求
- 19. 流星+反應:服務器端路由?
- 20. 流星服務器端變量持續存在於方法之間
- 21. 流星 - 如何在密碼上使用服務器端驗證
- 22. 如何在服務器端修改並保存html/css?
- 23. 更改mime類型的圖像之前,將它保存在服務器
- 24. BreezeJS:服務器添加的對象顯示爲保存更改後在客戶端添加的對象
- 25. 緩存服務器端的JSON對象
- 26. 流星:如何更好地更新服務器或客戶端上的記錄
- 27. npm如何更改服務器端口
- 28. 流星服務器端數據庫批量修改
- 29. 在保存之前提交NSTextField更改
- 30. 如何保存畫布圖像上傳到服務器之前?
一個項目,我知道,你可以調用一個方法服務器端兩者都做更新和插入,但將有來自於取消延遲補償的負面後果我所理解的。 – HGandhi