Население мангуста не дает никаких результатов - PullRequest
0 голосов
/ 30 апреля 2018

Я видел несколько подобных вопросов здесь, но ни одно из решений, похоже, не работает. Я создаю планировщик столов для своей свадьбы и пытаюсь выполнить запрос, чтобы вернуть все обеденные столы (верхний стол, первый стол, второй стол и т. Д.) Со списком гостей, назначенных для этих столов. У меня есть следующие схемы:

const guestSchema = new mongoose.Schema({
  firstname: {
    type: String,
    required: 'Please provide the first name of the guest',
    trim: true
  },
  surname: {
    type: String,
    required: 'Please provide the surname of the guest',
    trim: true
  },
  attending: {
    type: String,
    default: 'Awaiting RSVP'
  },
  menu: {
    type: String,
    default: 'Awaiting RSVP'
  },
  allergies: {
    type: String,
    default: 'Awaiting RSVP'
  },
  table: [{
    type: mongoose.Schema.ObjectId,
    ref: 'Table',
  }]
});


const tableSchema = new mongoose.Schema({
  name: {
    type: String,
    required: 'Please provide the name of the table',
    trim: true
  },
  capacity: {
    type: Number,
    required: 'Please provide the capacity of the table',
  },
  guests: [{
    type: mongoose.Schema.ObjectId,
    ref: 'Guest',
  }]
});

В моем guestController.js я затем настроил конечную точку API следующим образом:

exports.getTableGuests = async (req, res) => {
  const guests = await Table.find().populate({path: 'guests', select: 'firstname surname', model: 'Guest'});
  res.json(guests);
};

где guest - это имя иностранного поля в модели Table. В возвращенном JSON я получаю массив гостей, но он пустой.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Хорошо, я сам обнаружил проблему. Проблема заключалась в том, что у меня был скрипт load-data.js, который я запускал для загрузки гостей и таблиц из файлов JSON. Данные JSON для таблиц содержали гостевые идентификаторы для гостей, которые в данный момент находились в базе данных на момент загрузки. Но когда скрипт запускается, он удаляет всех гостей и генерирует для них новые идентификаторы, поэтому идентификаторы не совпадают с идентификаторами в коллекции таблиц.

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

0 голосов
/ 30 апреля 2018

Используйте mongoose.Schema.Types.ObjectId вместо mongoose.Schema.ObjectId. Это решит проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...