我想在这种情况下使用猫鼬。假设我们有一个这样的模式:
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: '[email protected]'
};
如果在大多数情况下将其与猫鼬更新方法一起使用,则还将姓氏更改为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和其他库。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句