2017-05-26 88 views
0

我的工作与流星/角一个项目,我想ID同时插入的元素用它我怎样才能获得ID,同时插入流星/ angular2

我的代码==>

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); 
+0

你应该得到的ID在山坳变量正如你试过的。你能提供更多的代码吗? –

+0

是你的'collection'变量是Meteor-rxjs'['MongoObservable.Collection'](https://angular-meteor.com/api/meteor-rxjs/latest/ObservableCollection#new_Collection_new)还是Meteor的['Mongo。 Collection'(http://docs.meteor.com/api/collections.html#Mongo-Collection)? – ghybs

+0

我正在使用MongoObservable.Collection – Dev

回答

0

我猜你collection变量不是一个标准的流星的Mongo.Collection,但流星rxjs' MongoObservable.Collection,其中insert()方法返回Observable而不是新插入的文档ID。

I.e.你已经做了这样的:

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

在这种情况下,你有2级简单的解决办法:

  • 访问流星的蒙戈集合behind流星rxjs包装:
const newDocId = meteorRxjsCollection.collection.insert(newDoc); 
  • 订阅可观察到的流星rxjs返回insert方法,来获得ID,以类似的方式,如流星的insert使用回调:
const sub = meteorRxjsCollection.insert(newDoc).subscribe(function (newDocId) { 
    sub.unsubscribe(); 
    // use newDocId… 
}); 
0

数据库操作和流星方法调用默认情况下,服务器和异步的CLIEN上同步吨。这意味着

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); 
});