8

根据 Meteor 文档....

collection.insert(doc, [callback])

回调函数

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

……然后再下来……

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

它是哪个,错误和_id或错误和结果?我确实有 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 点......我很模糊,所以我可能(可能)遗漏了一些非常明显的东西。

干杯斯蒂夫

4

2 回答 2

6

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

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

并且 id 将可用。

于 2012-05-09T10:30:17.910 回答
6

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

于 2012-05-09T18:41:31.313 回答