在meteor中,服务器上的连续操作是同步的吗?

时间:2014-01-02 13:37:42

标签: meteor

如果作为单个Meteor.call的一部分,我在服务器上对数据库进行两次调用,这些是同步发生还是我需要使用回调?

Meteor.methods({
    reset: function(id) {
        Players.remove(_id:id);
        // Will the remove definitely have finished before the find?
        Players.find();
        ...

}

2 个答案:

答案 0 :(得分:0)

来自文档:

  

在Meteor中,您的服务器代码在每个请求的单个线程中运行,而不是以Node的典型异步回调样式运行。我们发现线性执行模型更适合Meteor应用程序中的典型服务器代码。

答案 1 :(得分:0)

如果您阅读了docs.meteor.com/#remove上的文档 你可以找到这个:

  

块引用   在服务器上,如果您不提供回调,则删除块直到数据库确认写入,然后返回已删除文档的数量,或者如果出现错误则抛出异常。如果您确实提供了回调,请立即删除。删除完成后,如果失败则调用带有单个错误参数的回调,或者如果删除成功则调用第二个参数指示已删除文档的数量。

     

块引用   在客户端上,删除永不阻止。如果您没有提供回调并且服务器上的删除失败,那么Meteor将向控制台记录警告。如果您提供回调,Meteor将在出现错误时使用error参数调用该函数,或者如果删除成功则使用第二个参数指示已删除文档的数量。

因此,在服务器端,您可以选择是以同步还是异步方式运行,这取决于您是否发送回调。