访问 mongoose.Schema.methods 中的“select: false”字段

Posted

技术标签:

【中文标题】访问 mongoose.Schema.methods 中的“select: false”字段【英文标题】:Access "select: false" fields in mongoose.Schema.methods 【发布时间】:2019-06-02 18:58:42 【问题描述】:

使用一个玩具示例,假设我有以下架构:

const ExampleSchema = new mongoose.Schema(
  publicField: String,
  privateField:  type: String, select: false 
);

ExampleSchema.methods.doSomething = async function() 
  console.log(this.privateField); // undefined

如何访问doSomething函数中的privateField

或者有没有更好的方法来实现这一点?

【问题讨论】:

请看这个链接...github.com/Automattic/mongoose/issues/1596 ....***.com/questions/12096262/… 嗯是有道理的。目前,我正在使用选择整个对象然后删除.toObject() 函数中的敏感字段的解决方法 【参考方案1】:

privateField 可以正确访问架构定义中的 doSomething 实例方法。

ExampleSchema 使 doSomething 方法在使用它的 Model 上可用。

this.privateField 指的是模型实例的privateField 属性。

假设有一个使用ExampleSchema 定义的Example 模型

const Example = mongoose.model('Example', ExampleSchema);

Example 的实例被构造时,它上面会有doSomething 方法可用。

const example = new Example(privateField: 'This is a privateField');
example.doSomething(); // logs "This is a privateField" 

【讨论】:

以上是关于访问 mongoose.Schema.methods 中的“select: false”字段的主要内容,如果未能解决你的问题,请参考以下文章

如何设置MSSQL数据库访问用户及访问权限

在SQL数据访问中如何对不同级别设置访问权限

有效访问时间和平均访问时间

一个网站用域名可以访问,用ip不能访问,是为啥?

C盘 位置不可用,无法访问C:\ 拒绝访问

文件拒绝访问无法访问怎么办