是否可以使用 mongoose 在一次查询中查询主文档并附加“外部”文档?

问题描述 投票:0回答:0

是否有可能以某种方式查询一个文档并使用 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 转换整个数据库。

javascript typescript mongodb mongoose relationship
© www.soinside.com 2019 - 2024. All rights reserved.