我有以下客戶端代碼(具有兩個集合A
和B
):我怎樣才能在同一事務中更新流星多個集合?
var id = A.insert({name: 'new element of A');
var b = B.findOne({name: 'parent of new element of A'});
B.update(b._id, { $set: { child: id } });
上面的代碼工作正常,即,服務器側集合正確更新。問題發生在客戶端,我有兩個A
和B
集合改變反應的模板上。
- 它立即重繪自己的基礎上,延遲補償機制,顯示了兩個集合
- 不久之後,它重繪自身正確的再次改變,但沒有改變(:
模板如下反應因爲如果他們被拒絕)
- 它不會自動刷新了之後。但是,如果我打的刷新按鈕,模板重繪一次,現在顯示正確更新的集合(包括
A
和B
)
在第二隻刷新集合中的一個(父B
)已更新並且模板顯示不一致的數據(就像更新沒有發生一樣)。
我想這是因爲我不與同時更新兩個集合,混淆了客戶端模板一個單一的交易在這裏處理。
我該如何解決這個問題?
編輯:
我必須補充一點,在我的情況,我有兩個互補訂閱子數據庫:
var A = new Meteor.Collection('children');
handle1 = Meteor.subscribe('children1');
handle2 = Meteor.subscribe('children2');
,並在服務器上
Meteor.publish('children1', function() {
return A.find({ sex: male });
}
Meteor.publish('children2', function() {
return A.find({ sex: female });
}
難道這是當我在A中插入一個新元素時,我得到上面描述的奇怪行爲的原因是什麼?
流星不支持事務處理(還)。認爲這是在路線圖上,雖然 – Swadq 2013-04-26 22:57:28