#node.js #mongoose #mongoose-schema #mongoose-populate
#node.js #мангуст #мангуст-схема #мангуст-заполнить
Вопрос:
У меня есть предварительное подключение для заполнения необходимых полей, настроенных как schema.pre(/^find/, fn)
. Теперь я пытаюсь заставить такую же систему работать с document.save()
функцией, к сожалению, она не работает ни с schema.pre('save')
, ни с schema.post('save')
Итак, это полностью заполнило бы поля:
let user = await User.findOneAndUpdate({_id: user._id}, {$set: {testFieldWithRef: someObjectId}}, {new: true});
console.log(user.testFieldWithRef) //would output populated field instead of objectId
Это не будет заполнять поля моими .pre
крючками
let user = await User.findOne({_id: user._id})
user.testFieldWithRef = someObjectId
user.markModified('testFieldWithRef')
user = await user.save()
console.log(user.testFieldWithRef) //would output someObjectId
Ответ №1:
Итак, это сработало. Грустно, что mongoose не так популярен в stackoverflow
schema.pre('save', async function(next) {
await this.populate({
path: 'testFieldWithRef'
}).execPopulate();
next()
})
Комментарии:
1. Хороший братан 🙂