2016-06-28 23 views
0

此Meteor服務器代碼嘗試將新創建的屬性_id複製到子文檔中,但未能如此。如何將Mongo文檔自己的_id保存在嵌套字段中?

怎麼辦?

編輯:
代碼使用matb33:collection-hooks

MyCollection.after.insert(function(userId, doc) { 
    if (doc.element === 'myString') { 
    doc.values[0]._id = doc._id; 
    } 
}); 
+0

您是否在使用類似https://github.com/matb33/meteor-collection-hooks? –

+0

@AnthonyAstige是的。發佈更新。 –

+0

插入文檔時爲什麼不生成'_id'?這將消除運行這些附加查詢的需要。 – MasterAM

回答

2

變異在matb33:collection-hooksafter掛鉤doc不會造成額外的查詢運行。如果您希望這樣做,您將需要明確指定update文件。

但是,在這種特殊情況下,如果您確實需要文檔中的副本_id,則可以生成_id並在插入文檔時指定它。

您或許可以使用MyCollection._makeNewID()方法,因爲此API在幾年內沒有變化,而且它是Mongo包在內部使用的。

const _id = MyCollection._makeNewID(); 
const doc = { 
    _id, 
    values: [ 
    { 
     _id, 
     ... 
    }, { 
     ... 
    } 
    ] 
}; 

MyCollection.insert(doc); 
相關問題