2015-07-10 61 views
0

我有一个循环,我首先创建1个对象,下一个对象使用先前插入的对象的id。并发插入流星

问题是,有时似乎没有完成在开始下一个插入之前插入前一个对象,所以最后一个插入没有从前一个插入中获得id。

我想这是流星创造的事情并发而不是停止等待其他操作完成前继续前进。

如何在继续之前确保先前的插入已完成?

回答

1

你在服务器上还是客户端?对于服务器,如果你不提供回调,这些方法应该同步运行,对于客户端你必须提供一个回调,你应该在回调返回的数据中得到id。如果你需要让他们同步你可以使用流星的wrapAsync方法,更多信息在这里:http://docs.meteor.com/#/full/meteor_wrapasync

+0

我在服务器上做到这一点。我用'group = Groups.insert({name:“A”})插入; element = Elements.insert({groupId:group._id});'。如何包装这些功能,所以我确定在插入元素之前插入了该组? – Jamgreen

+1

当你做Elements.insert时,groupId参数应该只是“group”,而不是group._id。 Insert返回对象ID,而不是对象本身,请检查http://docs.meteor.com/#/full/insert - “在集合中插入文档,返回其唯一的_id。” – Cristian

+0

因为您在服务器上,所以不需要wrapAsync,这些调用就会同步。你的代码很好,除了那个额外的._id :) – Cristian