我想實現這樣的事情:爲什麼流星會取消對觀察者方法中嵌套的集合的更改?
/* We use the command pattern to encode actions in
a 'command' object. This allows us to keep an audit trail
and is required to support 'undo' in the client app. */
CommandQueue.insert(command);
/* Queuing a command should trigger its execution. We use
an observer for this. */
CommandQueue
.find({...})
.observe({
added: function(command) {
/* While executing the action encoded by 'command'
we usually want to insert objects into other collections. */
OtherCollection.insert(...)
}
});
遺憾的是,似乎流星保持OtherCollection
的以前的狀態,而在CommandQueue
執行交易。對OtherCollection
進行臨時更改。一旦CommandQueue
的交易完成,OtherCollection
的先前狀態將會恢復,但我們的更改消失。
任何想法爲什麼會發生這種情況?這是預期的行爲還是錯誤?
偉大的答案:-) – jerico
只要我在我的項目中有'不安全'的包,這種解決方案工作正常。刪除它會在客戶端的OtherCollection.insert()中引發'插入失敗:拒絕訪問'。我顯然需要模擬來獲得良好的響應時間。但是我不能讓客戶寫入對OtherCollection的訪問權限,因爲必須通過經審計的事務來改變路由。任何想法如何在這種情況下暫時模擬這種變化直到從服務器返回「真正」的變化? – jerico