Как получить создать новую коллекцию из Id в mongodb - PullRequest
0 голосов
/ 10 июля 2019

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

Я знаю, что мне как-то нужно для каждого пользователя найти findById, а затем отобразить все новые данные в новый объект данных.

const UserSchema = new Schema(
  {
    id: Number,
    name: String,
    website: String,
    items: [{
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Item'
      }]

  },
  { timestamps: true }

);

const ItemSchema = new Schema(
  {
    id: Number,
    x: Number,
    y: Number,
    xSize: String,
    ySize: String,
    imageSource: String,
    user: { type: mongoose.Schema.ObjectId, ref: 'User' }
  },
  { timestamps: true }
);



  var post = User.find({})
    .populate('Items')
    .exec(function (error, items) {
      items.map(function (item) {
        item.items.map(function (item2) {
          return item2.findById({ "_id": item2._id })
        })
      })
    })



[ { items: [ 5d0b4d04e8fe260f791a0dc8, 5d0b4d04e8fe260f791a0dc9 ],
    _id: 5d0b4d04e8fe260f791a0dca,
    name: 'Dave',
    website: 'http://www.bbc.com',
    createdAt: 2019-06-20T09:08:20.814Z,
    updatedAt: 2019-06-20T09:08:20.814Z,
    __v: 0 },
  { items:
     [ 5d0b4d707c72800f8f9b1a10,
       5d0b4d707c72800f8f9b1a11,
       5d0b4d707c72800f8f9b1a12 ],
    _id: 5d0b4d707c72800f8f9b1a13,
    name: 'Steve',
    website: 'http://www.google.com',
    createdAt: 2019-06-20T09:10:08.376Z,
    updatedAt: 2019-06-20T09:10:08.376Z,
    __v: 0 },

Я хочу, чтобы все данные элементов были заполнены всеми данными схемы, а не только их идентификатором.

1 Ответ

0 голосов
/ 10 июля 2019

Вы должны заменить .populate('Item') на .populate('items').

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