У меня есть 2 коллекции, а именно socials
и users
. В коллекции users
у меня есть поле массива socialList
, которое будет содержать идентификаторы из другой коллекции. Моя коллекция users
имеет поле lists
, которое является массивом и обновляется с некоторой информацией. Я хочу сохранить это _id
(недавно созданные данные в этом массиве) внутри моего поля socialList
в коллекции users
с помощью метода заполнения.
код модели пользователя: -
const UserSchema = new mongoose.Schema({
date: {
type: Date,
default: Date.now
},
socialList: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Social'
}]
});
код социальной модели: -
const socialSchema = new Schema({
lists: [{
link:{ type: String},
linkName: { type: String}
}],
user: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
}
})
маршрут социального API: -
try {
const socialListUser = await Social.find({ user: req.user.id }).populate('socialList').exec((err, socialList) => {
console.log(`Populated User ${socialList}`)
})
console.log(`SocialListUser ${socialListUser}`)
// to create and update the lists field array
let social = await Social.findOne({ user: req.user.id})
if (social) {
social = await Social.findOneAndUpdate(
{user: req.user.id},
{$push: {"lists": [req.body]}},
{new: true,"safe": true}
)
return res.json(`${social}`)
}else {
const socialList = new Social({
user: req.user.id,
lists: [req.body]
})
await socialList.save()
}
} catch (err) {
console.error(err.message);
res.status(500).send('Server Errors')
}
}
Вывод в терминале узла, который я получаю: -
SocialListUser undefined
Populated User {
_id: 5dc2ec3b650e4f167e4bca84,
user: 5dbed60236e3e7343ac657cf,
lists: [
{
_id: 5dc2ec3b650e4f167e4bca85,
linkName: 'too',
link: 'http://localhost:3000/fsd'
}
],
__v: 0
}```