猫鼬:在“对象”字段下的“对象”数组中添加元素

时间:2020-09-17 10:21:16

标签: javascript node.js arrays mongoose

我正在尝试向Object字段下的Objects数组添加元素 这在我的猫鼬“ Utilisateur”模式中: enter image description here

所以我在这里要做的是向“ lien_vers”数组中添加一个元素 这是我写的代码

  Utilisateur.findOneAndUpdate({ _id: mongoose.Types.ObjectId(auteur._id) },

                          {
                            $push: {
                              'relations.lien_vers': {
                                metadonnees: { nom_societe: societePersonalId },
                                identite: auteur._id.toString(),
                                canons: [""]

                              }
                            }
                          }, { upsert: true }
                          , function (error, doc) {
                            if (err) {
                              console.log("Something wrong when updating data!", err);
                            }

                            console.log("updated", doc.relations);
                          });

我没有任何错误,但是没有任何变化!似乎更新无法正常工作 有帮助吗

2 个答案:

答案 0 :(得分:1)

默认情况下,findOneAndUpdate()返回应用更新之前的文档。如果设置了new: true,则findOneAndUpdate()会在应用更新后为您提供对象。

您的代码看起来不错,记录已在您的db中更新,它只是在回调之前返回更新之前的文档。要获取更新的文档,只需在选项中添加new: true

答案 1 :(得分:0)

最终,该解决方案对我有用

我坚持要添加{ _id: ObjectID('SOMEid'), firstName:"x", lastName:"y", email:"x@z.com", username:"xxx", password:"xyz", books: [] } ,以便markModified()方法可以检测到更改

save()