Lodash _.merge 函数不会用更新的信息覆盖属性
Lodash _.merge function not overwriting properties with updated information
在我的用户编辑路径中,我尝试使用 Lodash 合并功能用 req.body 中发送的更新来更新返回的用户文档(来自 Mongoose)。这是我的代码:
const { dobYear, dobMonth, dobDay } = req.body;
const dob = formatDob(dobYear, dobMonth, dobDay);
const user = await db.User.findById(req.params.id);
const updates = pick(req.body, [ 'fullName', 'email', 'password', 'gender', 'address', 'avatar_url' ]);
merge(user, [updates, dob]);
let updatedUser = await user.save();
问题是即使我在请求中发送了更新的电子邮件,合并似乎并没有用新的电子邮件值(来自 updates
)实际覆盖旧的电子邮件值。
merge(用户, [更新, dob]);.
用法不正确。接受以下内容:
Arguments
object (Object): The destination object.
[sources] (...Object): The source objects.
观察...,这意味着它接受可变数量的参数。
merge(user, updates, { dob })
您正试图以将参数传递给 merge
的方式将对象与数组合并。
See documentation。我假设您的困惑来自于他们在文档中有 _.merge(object, [sources])
这一事实。但是,如果您在 Arguments
部分看到它们有:
[sources] (...Object): The source objects.
表示对象列表而不是实际数组。
试试这个:
var user = { 'a': 1, 'b': 2 };
var updates = { 'a': 3, 'c': 4, 'email': 'aaa@bbb.com' };
let dob = '11-11-2019'
let result = _.merge(user, updates, {dob}); // <-- ...Object
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
在我的用户编辑路径中,我尝试使用 Lodash 合并功能用 req.body 中发送的更新来更新返回的用户文档(来自 Mongoose)。这是我的代码:
const { dobYear, dobMonth, dobDay } = req.body;
const dob = formatDob(dobYear, dobMonth, dobDay);
const user = await db.User.findById(req.params.id);
const updates = pick(req.body, [ 'fullName', 'email', 'password', 'gender', 'address', 'avatar_url' ]);
merge(user, [updates, dob]);
let updatedUser = await user.save();
问题是即使我在请求中发送了更新的电子邮件,合并似乎并没有用新的电子邮件值(来自 updates
)实际覆盖旧的电子邮件值。
merge(用户, [更新, dob]);.
用法不正确。接受以下内容:
Arguments
object (Object): The destination object.
[sources] (...Object): The source objects.
观察...,这意味着它接受可变数量的参数。
merge(user, updates, { dob })
您正试图以将参数传递给 merge
的方式将对象与数组合并。
See documentation。我假设您的困惑来自于他们在文档中有 _.merge(object, [sources])
这一事实。但是,如果您在 Arguments
部分看到它们有:
[sources] (...Object): The source objects.
表示对象列表而不是实际数组。
试试这个:
var user = { 'a': 1, 'b': 2 };
var updates = { 'a': 3, 'c': 4, 'email': 'aaa@bbb.com' };
let dob = '11-11-2019'
let result = _.merge(user, updates, {dob}); // <-- ...Object
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>