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

Я строю планировщик стола для своей свадьбы, который включает в себя распределение гостей за столами. У меня есть модель «таблица» со следующей схемой:

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',
  }
});

Я ожидаю, что каждая запись модели Table будет иметь свойство под названием guest, которое будет возвращать массив гостевых идентификаторов. Я настроил следующий файл JSON для импорта:

[
  {
    "firstname": "Name1",
    "surname": "Surname1",
    "table": "5ad9fe819c2a33f9edcd33b5"
  },
  {
    "firstname": "Name2",
    "surname": "Surname2",
    "table": "5ad9fe819c2a33f9edcd33b5"
  },
  {
    "firstname": "Name3",
    "surname": "Surname3",
    "table": "5ad9fe819c2a33f9edcd33b5"
  },
  {
    "firstname": "Name4",
    "surname": "Surname4",
    "table": "5ad9fe819c2a33f9edcd33b5"
  }
]

Но когда я пытаюсь импортировать его, я получаю следующую ошибку:

Ошибка приведения к ObjectID для значения "['5ae2e655c122b654ba3765b4',
'5ae2e655c122b654ba3765b5', '5ae2e655c122b654ba3765b6',
'5ae2e655c122b654ba3765b7', '5ae2e655c122b654ba3765b8'] "на пути "гости"

Массив выглядит хорошо для меня, и скрипт импорта, который я использую, работал нормально, когда я использовал его для импорта данных в другую модель, в которой не было массивов.

Есть идеи?

1 Ответ

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

Я думаю, вы неправильно определили guests как ObjectId, вместо этого он должен быть массивом ObjectIds. И именно поэтому он не может преобразовать массив ObjectIds в ObjectId, следовательно, ошибка выше.

Ваша схема должна выглядеть примерно так:

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