为了争辩,让我们采用以下模式:
const ImaginarySchema = new Schema ({
Name: String,
Age: Number,
Weight: Number,
Value: Number,
});
在此架构中,值的计算方式由以下函数表示:
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();
};
在此先感谢您的帮助。
答案 0 :(得分:1)
也许您正在搜索难以捉摸的Mongoose静态变量:
https://mongoosejs.com/docs/guide.html#statics
统计信息会创建一种人为的方法来解析您想要的样子。
如果这不是您要搜索的内容,请在其下方查找,其中可能有满足您需求的查询助手。
如果这仍然不是您要查找的内容,请查看下面的内容,我认为最接近您的描述的虚拟物品。
以上所述,我不建议您继续更新数据源(数据库)以在给定相同静态输入的情况下存储动态值。我建议您有一个模型层(用于定义架构以及与该架构关联的静态/帮助器),并使用它来计算您的值。
答案 1 :(得分:0)
根据mongoose SchemaTypes,文档不能是函数。 有效类型包括: