【发布时间】:2021-11-13 08:17:38
【问题描述】:
我有一个users 架构,其中有一个companies 字段,如果role 字段值为admin,我只想选择它,否则它不应该在查找查询中返回。
user 架构:
const userInfoSchema = new mongoose.Schema({
...,
companies: [
{
type: mongoose.Schema.ObjectId,
ref: 'companyinfos',
},
],
role: {
type: String,
enum: ['user', 'admin', 'employee'],
default: 'user',
},
});
我试图通过使用 pre find hook 来解决这个问题,但无法排除公司字段。
userInfoSchema.post(/^find/, function (doc, next) {
if (doc.role !== 'admin') {
this.find({}).select('-companies');
}
next();
});
或者有没有什么方法可以根据role的值在userInfoSchema的companies字段中有条件地设置select?
请帮忙。
【问题讨论】:
标签: database mongodb mongoose mongoose-schema