首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Mongoose中,我有具有一对多关系的用户和角色模式。如何查询特定用户是否具有'admin‘角色?

问在Mongoose中,我有具有一对多关系的用户和角色模式。如何查询特定用户是否具有'admin‘角色?
EN

Stack Overflow用户
提问于 2021-04-19 11:55:28
回答 1查看 207关注 0票数 0

我的Mongo DB中有两个集合: users和roles。用户可以有多个角色。使用Mongoose,我想要找出一个特定的用户(基于他们的id)是否具有admin角色。如何执行该查询?在SQL中,查找结果的一种方法是编写以下查询:

代码语言:javascript
复制
SELECT *
FROM Users
INNER JOIN Roles ON Users.id = Roles.userID
WHERE (Users.id = <some user id> AND Roles.name='admin')

但是我不明白如何使用Mongoose来完成相同的查询。下面是我的Mongoose模式:

代码语言:javascript
复制
let RoleSchema = new Schema({
    name: String,
    owner: {
        type: Schema.Types.ObjectId,
        ref: "User"
    }
})
export let Role = mongoose.model("Role", RoleSchema)


let userSchema = new Schema({
    username: {
        type: String,
        unique: true,
        required: true,
        trim: true
    },
    roles: [
        {
            type: Schema.Types.ObjectId,
            ref: "Role"
        }
    ]
})
export let User = mongoose.model("User", userSchema)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-19 12:09:15

Read - https://mongoosejs.com/docs/populate.html#query-conditions

代码语言:javascript
复制
User.
  findById(id). // can also use find/findOne depending on your use-case
  populate({
    path: 'roles',
    match: { name: 'admin' }
  }).
  exec();

这将获取name为admin的用户详细信息和角色。

您可以检查user.roles阵列计数,以了解用户是否具有管理员角色。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67155757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档