插入meteor / angular2时如何获取id

时间:2017-05-26 11:41:15

标签: angularjs meteor

我正在使用meteor / angular进行项目,我希望在插入元素时使用id来获取id

我的代码==>

collection.insert({
           name: name,
           birthDay: birthDay ,
           birthPlace:birthPlace,
           nationalities:nationalities,
           fields : fields
         });

我试试这个,但它不起作用

    const col = collection.insert({
               name: name,
               birthDay: birthDay ,
               birthPlace:birthPlace,
               nationalities:nationalities,
               fields : fields
             });
   console.log(col);

2 个答案:

答案 0 :(得分:0)

Meteor中的数据库操作和方法调用默认情况下 在服务器上是同步的,在客户端上是异步的。这意味着

collection.insert({ ... });
只有在服务器上调用时,

才会返回id。如果你想在客户端中插入id,你必须使用回调,因为它是异步的:

collection.insert({ ... }, function (err, insertedId) {
    if (err) {
        throw err; // handle error your preferred way
    }
    // do something with insertedId
    console.log(insertedId);
});

答案 1 :(得分:0)

我猜你的collection变量不是标准的Meteor' Mongo.Collection,而是meteor-rxjs' MongoObservable.Collectioninsert()方法返回 Observable 而不是新插入的文档ID。

即。你做过类似的事情:

const meteorRxjsCollection = new MongoObservable.Collection('collectionName');

在这种情况下,您有2个简单的解决方案:

  • 访问Meteor的Mongo Collection behind meteor-rxjs包装器:
const newDocId = meteorRxjsCollection.collection.insert(newDoc);
  • 订阅meteor-rxjs insert方法返回的Observable,获取ID,方式与在Meteor insert中使用回调类似:
const sub = meteorRxjsCollection.insert(newDoc).subscribe(function (newDocId) {
  sub.unsubscribe();
  // use newDocId…
});