是否有可能以某种方式查询一个文档并使用 mongoose 将相关文档“加入”到它们各自的键/值上?
例如,我们有这两个集合:用户和角色
用户文档:
{
_id: ObjectId('6144501a8bc2b520e0c7f5d1'),
name: "John Doe",
role: "6144501a8bc2b520e0c7f5d3" // Currently referring to an id of a doc in the roles collection
}
角色文档:
{
_id: ObjectId('6144501a8bc2b520e0c7f5d3'),
displayRole: 'Super ultra admin',
permissions: [{...}]
}
是否可以对用户进行某种查询以获得下面的结果?
{
_id: ObjectId('6144501a8bc2b520e0c7f5d1'),
name: "John Doe",
role: {
_id: ObjectId('6144501a8bc2b520e0c7f5d3'),
displayRole: 'Super ultra admin',
permissions: [{...}]
}
}
下面是当前的解决方案,但对于获取多个外国文件来说并不是最优的:
const user = await Users.findById('6144501a8bc2b520e0c7f5d1')
const userObj = Object.assign({}, user._doc)
if (user.role) {
const role = await Roles.findById(user.role)
userObj.role = role
}
return userObj;
如果有解决这个问题的方法,欢迎任何确认或拒绝。我理解为什么关系数据库是最好的选择,但我们不想从 mongodb 转换整个数据库。