我的Mongo DB中有两个集合: users和roles。用户可以有多个角色。使用Mongoose,我想要找出一个特定的用户(基于他们的id)是否具有admin角色。如何执行该查询?在SQL中,查找结果的一种方法是编写以下查询:
SELECT *
FROM Users
INNER JOIN Roles ON Users.id = Roles.userID
WHERE (Users.id = <some user id> AND Roles.name='admin')但是我不明白如何使用Mongoose来完成相同的查询。下面是我的Mongoose模式:
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)发布于 2021-04-19 12:09:15
Read - https://mongoosejs.com/docs/populate.html#query-conditions
User.
findById(id). // can also use find/findOne depending on your use-case
populate({
path: 'roles',
match: { name: 'admin' }
}).
exec();这将获取name为admin的用户详细信息和角色。
您可以检查user.roles阵列计数,以了解用户是否具有管理员角色。
https://stackoverflow.com/questions/67155757
复制相似问题