Сводная таблица для Мангуст Схема ObjectID - PullRequest
0 голосов
/ 28 марта 2019

У меня есть следующая схема списка:

const ListSchema = mongoose.Schema({
    title: { type: String, required: true, max: 100 },
    items: [{
      type: mongoose.Schema.Types.ObjectId,
      ref: 'Item'
    }],
});

Все работает нормально, когда я заполняю его элементами. Однако я хочу иметь дополнительный столбец для каждого элемента в списке, поэтому я изменил схему:

const ListSchema = mongoose.Schema({
    title: { type: String, required: true, max: 100 },
    items: [{
      item: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Item'
      },
      quantity: 'String'
    }],
});

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

Для реляционной базы данных я бы использовал сводную таблицу для сохранения идентификатора списка, идентификатора элемента и количества, но я действительно не знаю, как MongoDB обрабатывает такие случаи. Любые предложения приветствуются.

1 Ответ

0 голосов
/ 29 марта 2019

Я понял это.

const ListSchema = mongoose.Schema({
  title: { type: String, required: true, max: 100 },
  items: [{
      type: mongoose.Schema.Types.Mixed, ref: 'Item', quantity: 'String'
  }],
});

В основном я изменил тип схемы элемента с mongoose.Schema.Types.ObjectId на mongoose.Schema.Types.Mixed.

Таким образом, когда вы .populate('items._id'), вы получите все из документа предметов И вашего дополнительного столбца (количество)

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