2017-09-13 14 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

私はそれを解決することはできません。 DBでは、正しく保存されているように見えます。あなたはタイプがあると予想何伝える必要があり、スキーマで定義されていないフィールドを取得しようとしている場合

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

おかげ

+0

えっ?スクリーンショットの右側には、追加されたフィールドが明確に示されています。 –

+0

はい、私はそのフィールドのパスを取得できません....モデルで定義されているフィールドのパスのみ –

答えて

0

はこれを試してみてください。

また、これも仕事ができる:あなたはそれが正しい型を持っていると確信して値を作るためにスキーマ定義をチェックマングースオブジェクトからいくつかの値を取得しようとしている

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

たびに。スキーマにないプロパティを取得するには、mongooseに型を教えたり、mongooseオブジェクトを普通のJSオブジェクトに変換したりする必要があります。

ドキュメント: http://mongoosejs.com/docs/api.html#document_Document-get http://mongoosejs.com/docs/api.html#document_Document-toObject

関連する問題