Проблемы с заселением мангуста - PullRequest
0 голосов
/ 29 декабря 2018

Схема игры

const { Schema, model } = require('mongoose');

const gameSchema = Schema({
  _id: Schema.Types.ObjectId,
  name: { type: String, required: true },
  description: String,
  calc: [{ type: Schema.Types.ObjectId, ref: 'Calc' }]
});

module.exports = model('Game', gameSchema);

Схема расчета

const { Schema, model } = require('mongoose');

const calcSchema = Schema({
  _id: Schema.Types.ObjectId,
  preset: { type: String, required: true },
  datasets: [{ type: Schema.Types.ObjectId, ref: 'Dataset' }],
  model: String,
});

module.exports = model('Calc', calcSchema, 'calc');

GET Игровой маршрут

router.get('/', passport.authenticate('jwt', { session: false }), (req, res) => {
  Game.find()
    .select('_id name calc')
    .populate('calc')
    .then(games => res.status(200).json(games))
    .catch(err => res.status(500).json({ error: err }));
});

Вместо заполнения свойства calc объектами Calc и замены идентификаторов свойство calc превращается в пустой массив.Как правильно использовать заполнить?Есть ли очевидная ошибка, которую я допустил в своем коде?

Вкратце: populate () приводит к calc: [] вместо calc: [{Calc object}, ...]

1 Ответ

0 голосов
/ 29 декабря 2018

В вашем случае вы пытаетесь заполнить массив документа (а не только один документ), поэтому вместо него следует использовать метод Model.populate () .

Game.find()
  .select('_id name calc')
  .then(games => Game.populate(games, { path: 'calc' }))
  .then(games => res.status(200).json(games))
  .catch(err => res.status(500).json({ error: err }));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...