【问题标题】:Meteor collection.insert callback issuesMeteor collection.insert 回调问题
【发布时间】:2012-05-17 10:40:09
【问题描述】:

根据 Meteor 文档....

collection.insert(doc, [callback])

回调函数

可选。如果存在,则以错误对象作为第一个参数和 _id 作为第二个参数调用。

...然后再往下...

在服务器上,如果您不提供回调,则插入块直到数据库确认写入,或者如果出现问题则抛出异常。如果您确实提供了回调,则 insert 立即返回。插入完成(或失败)后,将使用错误和结果参数调用回调,与方法相同。

是哪个,error 和 _id 还是 error 和 result?我确实有 Meteor.methods 正确触发回调并出现错误,结果可用于范围。

我只是无法让回调在 collection.insert(doc, [callback]) 上正常工作

无论哪种方式,我都无法让我的回调注册任何内容?

function insertPost(args) {
  this.unblock;
  if(args) { 
    post_text = args.text.slice(0,140);
    var ts = Date.now();  
    Posts.insert({
      post: post_text,
      created: ts
    }, function(error, _id){
      // or try function(error, result) and still get nothing 
      // console.log('result: ' + result);
      console.log('error: ' + error);
      console.log('_id: ' + _id); //this._id doesn't work either
    });

  }
  return;
}

我做错了什么?我从凌晨 2 点开始编码......我的时区下午 6 点......我很模糊,所以我可能(可能)遗漏了一些非常明显的东西。

干杯 史蒂夫

【问题讨论】:

    标签: meteor


    【解决方案1】:

    这是一个错误,在下一个版本中修复。现在,如果您向insert 提供回调,它将使用errorresult 参数调用,其中result 是新文档的ID,如果出现错误,则为null。

    【讨论】:

    • 这仍然是一个错误吗?我面临着 Steeve Cannon 遇到的同样问题。在第二个参数中无法触发任何内容。
    【解决方案2】:

    由于这是服务器端代码,您可以这样做:

    var id = Posts.insert({data}); // will block until insert is complete
    

    ID 将可用。

    【讨论】:

    • 谢谢,这就是我的选择。虽然我想在未来做更多的回调风格。他们说将来对有兴趣的人有用。
    猜你喜欢
    • 1970-01-01
    • 2018-07-13
    • 2017-12-04
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    相关资源
    最近更新 更多