[英]How to process deep update with subdocument in Mongodb/Mongoose?
我想在这种情况下使用猫鼬。 假设我们有一个这样的模式:
const userSchema = new Schema({
name: {
first: { type: String, required: true },
last: { type: String, required: true },
},
email: { type: String, required: true, unique: true, lowercase: true },
});
假设我们已经有了带有名字和姓氏的文档。 我只需要使用以下args对象更新名字和电子邮件:
const updateUser = {
name: {
first: Eddy,
},
email: 'eddy@gordo.io'
};
如果在大多数情况下将其与猫鼬更新方法一起使用,则还将姓氏更改为null
。 这是因为JavaScript不支持深度对象合并等。 那么获得正确合并对象可能性的最佳方法是什么?
我在下面找到了实现此目标的方法,但它似乎并不是最佳解决方案:
User.findById(args.id, (error, user) => {
if (error) throw err;
user.name.first = args.name.first ? args.name.first : user.name.first;
user.name.last = args.name.last ? args.name.last : user.name.last;
user.email = args.email ? args.email : user.email;
user.save((err, updatedUser) => {
if (err) throw err;
return updatedUser;
});
});
我和Eslint不喜欢这种重新分配和无法维护的代码。 有更好的主意吗? 我不确定是否仅需要为此功能使用lodash和其他库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.