【发布时间】:2021-06-07 03:06:32
【问题描述】:
我有一个名为“用户”的集合,该集合有一个“地址”字段,其中包含一个对象数组 目的:接收地址对象ID,用接收到的数据编辑它,更新数据库 我的代码:
async updateAdress(input) {
const { idUser, idAdress, adressInfo } = input;
let user = await User.findById(idUser);
let counter = 0;
console.log(adressInfo);
let old = user.adressInfo;
user.adressInfo.forEach(adress => {
if (adress.id == idAdress) {
old[counter] = adressInfo;
}
counter++;
});
console.log(old);
return User.findByIdAndUpdate(idUser, { $set: { adressInfo: old } }, { new: true }).catch(
err => console.error(err)
);
},
问题:它确实编辑了对象数组,控制台只显示了我想要发生的事情(我想),但是在数据库中,它将我编辑的对象字段设置为 null 并更新为不同的 id,所以我假设问题在于我在编辑对象时没有设置 id,所以我尝试在 GraphQL 查询中添加 id,甚至使用“adressInfo._id=idAdress”,但错误不断出现,我认为这是因为 _id 字段现在是一个字符串而不是普通的 MongoDB id,那么我该如何解决这个问题?
【问题讨论】:
-
您需要使用array update operators 来修改和更新文档中的数组字段。
-
我找到了解决方案,单独添加了字段,谢谢
标签: javascript mongodb mongoose graphql