Функция Lodash _.merge не перезаписывает свойства обновленной информацией - PullRequest
0 голосов
/ 22 июня 2019

В моем маршруте редактирования пользователя я пытаюсь использовать функцию слияния Lodash для обновления возвращенного пользовательского документа (из Mongoose) обновлениями, отправленными в req.body.Вот мой код:

    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).,

Ответы [ 2 ]

0 голосов
/ 22 июня 2019

Вы пытаетесь объединить объект с массивом так, как вы передаете аргументы merge.

См. Документацию . И я предполагаю, что ваше замешательство произошло из-за того, что в документах у них есть _.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>
0 голосов
/ 22 июня 2019

слияние (пользователь, [updates, dob]);.

Неправильное использование. Принимает следующее:

Arguments

    object (Object): The destination object.
    [sources] (...Object): The source objects.

Соблюдайте ..., это означает, что он принимает переменное число аргументов.

merge(user, updates, { dob })

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...