"围栏已经激活 - 添加写入为时已晚"

Llo*_*oyd 4 meteor

以下错误消息是什么意思?

fence已经激活 - 添加写入太晚了

以下是如何获取它的示例:

环境:

项目创建:

meteor create test
cd test
meteor add coffeescript http
mv test.js test.coffee
meteor
Run Code Online (Sandbox Code Playgroud)

test.coffee:

Records = new Meteor.Collection("records")

if Meteor.is_client
    Meteor.startup ->
        Meteor.call "test"

if Meteor.is_server
    Meteor.methods
        test: ->
            Meteor.http.get "http://www.meteor.com", ->
                Records.insert some:"data"
Run Code Online (Sandbox Code Playgroud)

avi*_*tal 6

方法执行完毕后,您无法添加其他写入.要延迟完成方法,您可以使用期货.像这样的东西:

Meteor.methods({
  foo: function() {
    var futures = _.map(urls, function(url) {
      var future = new Future();
      var onComplete = future.resolver();

      Meteor.http.get(url, function(error, result) {
        // do whatever you need

        onComplete();
      });

      return future;
    });

    Future.wait(futures);
  }
});
Run Code Online (Sandbox Code Playgroud)