2017-05-26 49 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); 
});