Mongoose virtual正在为该字段提供未定义的响应

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongoose virtual正在为该字段提供未定义的响应相关的知识,希望对你有一定的参考价值。

我有一个用例,我需要在保存之前修改一个字段,并在得到它时修改它。我正在使用mongoose虚拟来做它。这是我的代码。

const newSchema = new Schema( ip: String );
newSchema.virtual('ipAddress')
  .get(function() return ip.fromLong(this.ip) )
  .set(function(v)  this.ip = ip.toLong(v) );

当我打电话给model.create( ipAddress: '255.255.255.255' )时,ip是未定义的。我尝试在setter中为this.ip分配一个硬编码值,即使这样也是未定义的。我错过了流程中的任何内容吗?

答案

您无法使用输入数据创建与模型架构不同的内容(虚拟字段未存储在MongoDB中)。以下官方文件:

var IPModel = mongoose.model('IPTableName', newSchema);
var obj = new IPModel(
    ip: ''
);
obj.ipAddress = '255.255.255.255'; // call setter
obj.save();

以上是关于Mongoose virtual正在为该字段提供未定义的响应的主要内容,如果未能解决你的问题,请参考以下文章

使用 Mongoose 审查 MongoDB 字段

Mongoose对Number字段接受null

Nestjs - Mongoose - 虚拟字段 - 无法在 graphql 操场上查询

从受保护的未选中字段中获取虚拟字段

从父模式填充字段

从父模式填充字段