Я использую Mongoose / MongoDB и получаю странное поведение, когда пытаюсь использовать синтаксис распространения для возврата значений из документа после того, как я вызову .save () для него.
// Npc is a Mongoose schema
const npc = new Npc({
...input,
creator: userId
});
const createdNpc = await npc.save();
Я пытался использовать оператор spead, но ключи имени и описания не существуют.
return {
...createdNpc
creator: userFromId(npc.creator)
}
однако, когда я получаю прямой доступ к этим значениям, они определены
return {
description: createdNpc.description,
name: createdNpc.name,
creator: userFromId(npc.creator)
};
I 'Мы убедились в правильности написания описания и имени.Я пробовал войти в систему как {...createdNpc}
, так и {...createdNpc, description: createdNpc.description, name: createdNpc.name}
.В журналах я подтвердил, что как имя, так и описание не определены (ключи не существуют) внутри {... creationNpc}
Я также попытался войти в систему createdNpc
и {...createdNpc}
иподтвердили, что они возвращают разные значения.
вот созданный NPC:
{
_id: 5d8d5c7a04fc40483be74b3b,
name: 'NPC Name',
description: 'My Postman NPC',
creator: 5d8d50e0b5c8a6317541d067,
__v: 0
}
на самом деле он вообще не выглядит как документ Mongoose.Я бы опубликовал результат {...createdNPC}
, чтобы показать разницу, но это огромный фрагмент кода, и я не хочу загромождать вопрос.Я рад предоставить это, если это поможет!
Я все еще очень плохо знаком с MongoDB и Mongoose.Почему использование синтаксиса распространения в документе Mongoose изменяет его значение?
Я не думаю, что это должно относиться к вопросу, но на всякий случай я также упомяну это для распознавателя graphql.