在Mongoose中,如何确保默认情况下不返回任何字段-如果该字段使用ref
?
const userSchema = new mongoose.Schema({
// --- Works
isActive: {
type: Boolean,
select: false,
},
// --- Does NOT work
clientsList: [ {
type: mongoose.Schema.Types.ObjectId,
ref: 'Client',
select: false,
}],
});
如果我使用User.findById
检索此用户,则返回的User对象将不包含isActive
(按预期),但将包含clientsList
(不预期)。
是否还可以取消选择第二个字段?
PS:我了解我可以在查询级别手动执行.select('-clientsList')
,但希望取消选择它以添加模型级别,类似于第一个字段。
答案 0 :(得分:2)
您需要排除数组本身,当前正在排除数组中的值。
要解决此问题,只需更改您的clientList定义,如下所示:
clientsList: {
type: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "Client",
select: false
}
],
select: false
}
答案 1 :(得分:2)
您可以通过声明clientsList
字段来解决此问题:
clientsList: {
type: [ {
type: mongoose.Schema.Types.ObjectId,
ref: 'Salary'
}],
select: false,
}