如何从mongodb中的ID创建新集合

时间:2019-07-10 09:26:29

标签: javascript mongodb express mongoose

我有两个模型:用户模型和项目模型。每个用户可以有许多与之关联的项目。当我希望获取用户以及与他们相关联的商品的数据时,我只会得到商品的ID背面。我想获取所有与物料相关的数据,然后将其传递回前端。

我知道我需要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 },

我基本上希望所有项目数据都填充有模式中的所有数据,而不仅仅是id。

1 个答案:

答案 0 :(得分:0)

您应将.populate('Item')替换为.populate('items')