node.js - Mongoose virtual 正在为该字段提供未定义的响应
问题描述
我有一个用例,我需要在保存之前修改一个字段,并在我得到它时修改回来。我正在使用猫鼬虚拟来做到这一点。这是我的代码。
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
在设置器中分配一个硬编码的值,即使它是未定义的。我在流程中遗漏了什么吗?
解决方案
您不能使用输入数据创建与模型模式不同的内容(虚拟字段未存储在 MongoDB 中)。以下官方文档:
var IPModel = mongoose.model('IPTableName', newSchema);
var obj = new IPModel({
ip: ''
});
obj.ipAddress = '255.255.255.255'; // call setter
obj.save();
推荐阅读
- c++ - 调用 c++ 函数时遇到问题
- regex - 用于部分匹配的 Ruby 正则表达式
- jenkins - 为什么当我尝试在 Jenkins 上访问 MERCURIAL_REVISION 时返回值 NULL
- angular - Jenkins JUnit 测试结果报告插件指出 4 个测试报告文件被发现与模式 '**/unit-tests.xml'?
- azure-devops - 无限期保留发布和构建
- react-redux - 将多个变量传递给 Redux Action 创建者。什么格式?
- scala - Spark数据框将所有列转换为json格式,然后修改json结构
- elasticsearch - 处理 Elasticsearch 中的可选字段搜索
- java - 尝试验证空字段时,应用程序崩溃并出现错误“无法执行 android:onClick 的方法”
- flutter - 文本字段颤动的默认值?