Отношение схемы возвращается неопределенным после заполнения - PullRequest
0 голосов
/ 28 апреля 2019

В моей базе данных есть две коллекции, игроки и сферы.Я создал схему для них обоих, и они ссылаются друг на друга.Я запрашиваю коллекцию игроков и пытаюсь заполнить поле населения.Затем я пытаюсь console.log результатов, который возвращает Undefined.

player.js (модель)

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const PlayerSchema = new Schema({
  name: {
    type: String,
    required: true
  },
  wins: {
    type: Number,
    required: true
  },
  losses: {
    type: Number,
    required: true
  },
  race: {
    type: String,
    required: true
  },
  realm: {
    type: Schema.Types.ObjectId,
    required: true,
    ref: 'Realm'
  }
});

module.exports = mongoose.model('Player', PlayerSchema, 'players');

realm.js (модель)

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const RealmSchema = new Schema({
  name: {
    type: String,
    required: true
  },
  population: [{
    type: Schema.Types.ObjectId, 
    ref: 'Player'
  }]
});

module.exports = mongoose.model('Realm', RealmSchema, 'realms');

player.js (контроллер)

const Player = require('../models/player.js');
const Realm = require('../models/realm.js');

exports.getPlayers = (req, res) => {
  Player.find()
  .populate({
    path: 'realm',
    select: '_id name'
  })
  .then((players) => {
    console.log(players.realm);
    res.json(players);
  })
  .catch(err => {
    console.log(err);
  });
}

Ожидаемые результаты будут выглядеть примерно так:

{
  "players": [
      {
        "name": "Grubby",
        "wins": 2397,
        "losses": 632,
        "race": "Orc",
        "realm": {
          "_id": "5ca1985ae03dd80007aa008f",
          "name": "EU"
        }
      }
  ]
}

1 Ответ

0 голосов
/ 28 апреля 2019
exports.getPlayers = (req, res) => {
      Player.find().populate('realm').then((players) => {
        console.log(players.realm);
        res.json(players);
      })
      .catch(err => {
        console.log(err);
      });
    }

Чтобы использовать заполнение, определите ссылочную переменную в вашей модели и используйте в другой таблице с этим синтаксисом.

См. Ссылку для более подробной информации:

https://mongoosejs.com/docs/populate.html

...