访问 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”字段的主要内容,如果未能解决你的问题,请参考以下文章