我有两个模型:用户模型和项目模型。每个用户可以有许多与之关联的项目。当我希望获取用户以及与他们相关联的商品的数据时,我只会得到商品的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。
答案 0 :(得分:0)
您应将.populate('Item')
替换为.populate('items')
。