2017-12-24 15 views
0

私はfindOne()から約束している既存のオブジェクトに別のプロパティを追加しようとしています。私はちょうどので、プロパティ名を指定してそれに値を設定し、私は既存のオブジェクトに別のプロパティを追加する方法はこれに似ていることを知っているconvertName新しいプロパティを既存に追加すると機能しません

app.get('/getItem', (req, res) => { 

var itemID = req.query.itemID; 

Item.findOne({_id: itemID}).then(item => { 

    item.convertName = 'cm'; 
    res.send(item); 

    }).catch(err => { 
    res.status(401).send(); 
    }); 
}) 

プロパティずにオブジェクトを取得する応答で この場合、なぜ動作していないのか分かりません。

あなたは私がなぜそれが機能しないのか説明して助けてくれることを願っています。

+1

'lean()'をチェーンに追加するとどうなりますか? 'Item.findOne({_ id:itemID})のように。lean()。then(...)' – raina77ow

+0

その作業!リーン()は何をしますか? – zb22

答えて

0

Mongooseでは少し複雑です。デフォルトでMongooseDocumentがクエリによって返され、そのようなドキュメントに追加しようとするプロパティは、シリアル化された値(応答で送信される値)には反映されません。

これを回避する方法の1つは、リーンオプションを有効にする方法です(lean())。 the doc引用:有効leanオプションを使用して、クエリから返さ

ドキュメントは、プレーン javascriptのオブジェクトではなく、MongooseDocumentsです。彼らには保存方法がありません。 getters/settersまたは他のMongoose魔法が適用されています。

関連する問題