猫鼬虚拟正在对该字段给出未定义的响应

时间:2018-09-16 23:16:45

标签: node.js 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未定义。我尝试在设置器中为this.ip分配硬编码值,即使该值未定义。我在流程中缺少任何内容吗?

1 个答案:

答案 0 :(得分:0)

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

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