У меня есть такая схема пользователя
const userSchema = new Schema({
username: {
type: String,
unique: true,
required: true,
},
cardIds: [{
type: Schema.Types.ObjectId,
ref: 'cards',
}],
})
mongoose.model('users', userSchema)
Я пытаюсь сделать две вещи в хуке предварительного сохранения для пользователя: во-первых, сохранение каждой карты с идентификатором пользователя, а во-вторых, добавление cardIds
Пользователю.Мой код:
const Card = mongoose.model('cards')
userSchema.pre('save', function (next) {
if (this.cardIds.length === 0) {
cardList.forEach(async card => {
const newCard = await new Card({ ...card, user: this })
this.cardIds.push(newCard) // this is not working
newCard.save() // this is working
})
}
next()
})
Это добавит каждую карту в коллекцию cards
с правильным user._id
, однако у каждого пользователя все равно будет пустой массив для cardIds
.
Способ сохранения пользователя (без удобства обработки ошибок / проверки):
app.post('/users/new', async (req, res) => {
const newUser = await new User({ username: req.body.username })
await newUser.save()
return res.json({ message: 'User created successfully' })
})