在猫鼬模型中取消选择参考字段

时间:2019-12-14 06:09:21

标签: mongodb express mongoose mongoose-schema

在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'),但希望取消选择它以添加模型级别,类似于第一个字段。

2 个答案:

答案 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,
}