如果作为单个Meteor.call的一部分,我在服务器上对数据库进行两次调用,这些是同步发生还是我需要使用回调?
Meteor.methods({
reset: function(id) {
Players.remove(_id:id);
// Will the remove definitely have finished before the find?
Players.find();
...
}
答案 0 :(得分:0)
来自文档:
在Meteor中,您的服务器代码在每个请求的单个线程中运行,而不是以Node的典型异步回调样式运行。我们发现线性执行模型更适合Meteor应用程序中的典型服务器代码。
答案 1 :(得分:0)
如果您阅读了docs.meteor.com/#remove上的文档 你可以找到这个:
块引用 在服务器上,如果您不提供回调,则删除块直到数据库确认写入,然后返回已删除文档的数量,或者如果出现错误则抛出异常。如果您确实提供了回调,请立即删除。删除完成后,如果失败则调用带有单个错误参数的回调,或者如果删除成功则调用第二个参数指示已删除文档的数量。
块引用 在客户端上,删除永不阻止。如果您没有提供回调并且服务器上的删除失败,那么Meteor将向控制台记录警告。如果您提供回调,Meteor将在出现错误时使用error参数调用该函数,或者如果删除成功则使用第二个参数指示已删除文档的数量。
因此,在服务器端,您可以选择是以同步还是异步方式运行,这取决于您是否发送回调。