为了便于讨论,我们采用以下模式:
const ImaginarySchema = new Schema ({
Name: String,
Age: Number,
Weight: Number,
Value: Number,
});
在此 Schema 中,值的计算方式由以下函数表示:
function calculateValue(age, weight) {
value = Age*Weight;
};
鉴于年龄每天增加一,这个值当然是有规律地变化的,因此需要用函数自动计算。
实现此目的的最佳方法是什么?它应该放置在应用程序中的什么位置?
<小时/>我的尝试:
<小时/>首先,我想尝试以下语法,但是根据mongoDB docs不建议将应用程序逻辑存储在服务器上,因此将此函数保存在 server.js 中似乎不是最好的主意,并且假设这种语法甚至是可能的。
const ImaginarySchema = new Schema ({
Name: String,
AgeinDays: Number,
Weight: Number,
Value: calculateValue(),
});
其次,我正在查看类似下面的内容,但我再次不清楚这是否应该在模型文件中,如果它在模型文件中,那么如何定期运行它。
.pre('save'), function(next){
function calculateValue(age, weight) {
value = Age*Weight;
next();
};
预先感谢您的帮助。
最佳答案
也许您正在寻找难以捉摸的 Mongoose 静态数据:
https://mongoosejs.com/docs/guide.html#statics
静态创建一种人工方法,可以解析为您想要的结果。
如果这不是您要搜索的内容,请查看下面的内容,其中的查询助手可能会满足您的需求。
如果这仍然不是您要搜索的内容,请查看下面的内容,我认为有一些虚拟内容与您的描述最匹配。
<小时/>除此之外,我不建议您更新数据源(数据库)来存储给定相同静态输入的动态值。我建议您有一个模型层(定义架构以及与架构关联的静态/帮助程序)并使用它来计算您的值。
关于node.js - Mongoose 文档值可以是一个函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52479100/