2017-09-13 156 views
0

我已經動態地創建了一些字段(它們不在我的模型中)。我發現我的收藏COLLECTION.findById .....mongoDB動態創建字段

如果我想獲得路徑,它不顯示動態創建的路徑。

console.log(result); 

{ lv: { name: 'List vlastníctva', exist: false }, 
    projekt: { name: 'Projektová dokumentácia', exist: false }, 
    uzemne_rozhodnutie: { name: 'Územné rozhodnutie', exist: true }, 
    complete: false, 
    sctcst: { name: 'ščťčšť', exist: false }, 
    ctyzy: { name: 'čťýžý', exist: false }, 
    cssczz: { name: 'čšščžž', exist: false }, 
    __v: 0, 
    _id: 59b916633d77c1cf2958f007 } 

console.log(Object.keys(result.schema.paths)); 

[ 'lv.name', 
    'lv.exist', 
    'projekt.name', 
    'projekt.exist', 
    'uzemne_rozhodnutie.name', 
    'uzemne_rozhodnutie.exist', 
    'complete', 
    '_id', 
    '__v' ] 

console.log(result.lv); 
{ name: 'List vlastníctva', exist: true } 

console.log(result.cssczz); 
undefined 

在Object.keys中不是動態創建的字段。

command line + Robo 3T

我解決不了。在數據庫中,它看起來是正確保存的。

感謝

+0

咦?屏幕截圖的右側部分清楚地顯示了這些添加的字段。 –

+0

是的,但我無法獲取該域的路徑....只有在模型中定義的域的路徑 –

回答

0

試試這個:

result.get('cssczz', mongoose.Schema.Types.Object) 

如果你想取回未在架構中定義的,你需要告訴它的預期類型字段。

或者,這也可以工作:

var resultAsObject = result.toObject(); 
console.log(resultAsObject.csszz); 

每次你正在嘗試從貓鼬對象一定的價值它會檢查模式定義,以確保值將有正確的類型。要檢索不在模式中的屬性,您需要告訴貓鼬它的類型是什麼,或者首先將貓鼬對象轉換爲純JS對象。

文檔: http://mongoosejs.com/docs/api.html#document_Document-get http://mongoosejs.com/docs/api.html#document_Document-toObject