我有以下客户端代码(具有两个集合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