node.js - Mongoose 文档值可以是一个函数吗?

标签 node.js mongodb mongoose

为了便于讨论,我们采用以下模式:

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/

相关文章:

linux - Mongo 输出到 shell 变量

arrays - 仅当它是插入时如何推送数组元素

java - 我需要明确关闭连接吗?

node.js - 使用nodejs加入mongodb

mysql - 如何导出 mysql 查询返回的 'result'?

node.js - Mongoose 或带日期的运算符

node.js - Windows 10 Linux 镜像中的 Docker 绑定(bind)挂载问题

node.js - 使用Sinon 来 stub Mongoose 模型

node.js - 带有 mongoose 子文档的 HTTP PATCH 语义

javascript - Chrome 的网络推送通知