реализация метода заполнения для получения идентификаторов из массива, хранящегося в другой коллекции - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть 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
 }```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...