流星阻塞澄清

时间:2012-10-25 20:32:42

标签: node.js asynchronous meteor blocking

根据meteor docs,insert block:

  

在服务器上,如果您不提供回调,则插入块   直到数据库确认写入,否则抛出异常   有些不对劲。如果您确实提供了回调,请插入静止   立即返回ID。

所以这是错误的:

Meteor.methods({
  post: function (options) {
    return Stories.insert(options)
  }
});

我需要这样做:

Meteor.methods({
  post: function (options) {
    return Stories.insert(options, function(){})
  }
});

有人可以确认是这种情况吗?前者将阻止整个服务器直到db返回?

1 个答案:

答案 0 :(得分:2)

是的,它会阻止,但不会阻止整个服务器。

  

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

所以,如果你担心它会阻塞整个服务器,就像在典型的Node中一样,不要这样做。