【问题标题】:meteorjs get data returned from server callbackmeteorjs 获取服务器回调返回的数据
【发布时间】:2015-09-15 02:22:21
【问题描述】:

在流星中,我试图通过从客户端发出 Meteor.call 来插入新文档。一切正常,除了我想将创建文档的 id 返回给客户端,以便我可以重定向到正确的 url。

我有类似的东西(客户):

Meteor.call('scenarioCreate', scenarioObj, function(err, response) {

    if(err) {
      console.warn(err);
      return;
    }

    console.info(response);
});

在服务器上:

Meteor.methods({

  'scenarioCreate': function(scenarioObj) {

    Scenarios.insert( scenarioObj, function(err, id) {

      console.info("new id: "+id);

      if (err) {
        console.warn(err);
        throw new Meteor.Error(404, 'Something went wrong');
      }

      return id;

    });
  }

});

从服务器端,我得到控制台日志“新 id:DDaq4aWsGf3fxG7RP”,但我应该在客户端的“response”值上得到相同的值,但我总是不确定。

谁能向我解释为什么或我做错了什么。

【问题讨论】:

    标签: meteor callback


    【解决方案1】:

    您的第一个错误是您在insert 的回调中返回id。那没有任何作用。然后你的第二个是不知道方法是同步执行的。这意味着您只能使用Meteor.wrapAsync 回调中可用的信息。但这不是重点。 insert 函数返回新的_id。这意味着您可以这样做:

    Meteor.methods({
      'scenarioCreate': function(scenarioObj) {
        return Scenarios.insert( scenarioObj );
      }
    });
    

    【讨论】:

      【解决方案2】:

      Meteor.methods 不会等待您的回电。试试这个:

      在服务器上:

      Meteor.methods({
      
        'scenarioCreate': function(scenarioObj) {
      
          var newId =  Scenarios.insert(scenarioObj);
      
          return newId;
      
        }
      
      });
      

      要捕获任何错误,请使用try/catch

      注意:如果您仍想使用回调,请查看fibers/future

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-25
        • 1970-01-01
        • 2023-02-14
        • 2013-07-23
        相关资源
        最近更新 更多