【发布时间】:2019-01-16 17:01:45
【问题描述】:
我有这样的模型:
const UserSchema = new mongoose.Schema({
name: String,
workspaces: [
{
workspace: {
type: mongoose.Schema.ObjectId,
},
owner: Boolean
}
]
});
const WorkspaceSchema = new mongoose.Schema({
title: String,
description: String
});
我想像这样填充用户记录:
{
name: "John",
workspaces: [{
workspace: {
title: "First space",
description: "About space#1"
},
owner: true
}, {
workspace: {
title: "Second space",
description: "About space#2"
},
owner: false
}]
}
我尝试通过填充方法来做到这一点:
const user = await User
.findOne(query)
.populate({
path: 'workspaces',
populate: {
path: 'workspace',
model: 'Workspace'
}
});
这是不正确的。我搜索了这样的案例,但没有找到类似的东西。所有其他示例都不包括像我的布尔“所有者”这样的属性。
【问题讨论】:
-
当然,我可以将
owner属性移动到Workspace模型中,参考User。但在我的实际情况下,我也有permissions: {read: Boolean, write: Boolean}与owner处于同一级别的属性@ -
使用 $push 和 $each docs.mongodb.com/v3.2/reference/operator/update/push/…。避免使用通常不使用现代功能的库,这些功能在未来将是原子的并且更高效。
标签: javascript node.js mongodb mongoose mongoose-populate