2017-09-24 23 views
0

私は以下のコードを使ってコレクションの既存の文書を更新しています。新しい項目を配列にプッシュしたいと思います。スクリプトは例外もスローも配列にも何も追加しません。MongoDB配列に新しい項目を追加できません

問題を解決するよう専門家に依頼してください。そこ

transportModel.update(
    { ...your query here }, 
    { $push: { vehicle:{ vehicleType:req.body['vehicleType'] } } }, 
    done 
); 
+0

ワイルド推測が、 '.push()'非同期は、あなたのケースではありません。

transportModel.findOne({ "name": req.body['providerName'], "contact.postalCode": parseInt(req.body['postalCode']) },function (err, doc) { if (err) { logger.error("Error while updating record : - " + err.message); } else if (doc === null) { logger.error("Error while updating record in transport details : - unable to update database"); } else { doc.contact.addressLine1= req.body['addressLine1'] doc.contact.addressLine2= req.body['addressLine2'] //An array in transportModel. //Add new items to array doc.vehicle.push({ vehicleType:req.body['vehicleType'], }) doc.save() } }); 
Seblor

+0

私の悪い。ドキュメントを保存する前に応答を返していました。今はうまくいきます。 –

+0

doc.save()がエラーを返すかどうかを確認する方法はありますか? –

答えて

0

$push方法を試してみてください?その場合、 `doc.save()`が実際のプッシュの前に実行されている可能性があります。
+0

あなたのsupport.Myコントローラコードは正直でした。私はreturn文の後にdoc.saveを配置しただけです。以前はfindOneandUpdate関数を使って同じシナリオを試しましたが、それはいくつかのエラーを投げていました。 https://stackoverflow.com/questions/46387861/mongodb-findoneandupdate-function-is-inserting-new-document –

関連する問題