Как я мог заполнить документ после.функция сохранения с предварительным подключением

#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. Хороший братан 🙂