【问题标题】:Sequelize include calculated field that is calculated in the database?Sequelize包括在数据库中计算的计算字段?
【发布时间】:2014-11-30 07:08:33
【问题描述】:

在 Node.js 中使用 Sequelize 是否可以定义一个在检索数据时在数据库中计算的字段?

我知道我可以 add a custom getter to the DAO to calculate things in Node 但这只能处理已加载的数据。

我的目标是定义一个在数据库中运行的计算,因此可以使用子查询来使用其他数据进行计算。

例如,我希望这样做:

Products = Sequelize.define('Product', {
    'productId': { 
            type: Sequelize.INTEGER, 
            primaryKey: true, 
            autoIncrement: true 
        },
    'isProductActive': Sequelize.INTEGER,
    'productName': Sequelize.STRING,
    'productPrice': Sequelize.DECIMAL,


    // This is what I don't think Sequelize supports
    // but is what I ideally want to do...
    'totalSales': {
            type: Sequelize.DECIMAL,
            subQuery: "SELECT SUM(OD.TotalPrice) FROM OrderDetails OD WHERE OD.productID = Products.productID"
        }
};

有什么办法吗?

目前我正在使用Sequelize.query 运行自定义查询,但随后我失去了 Sequelize 的所有功能,并发现自己正在重做 Sequelize 已经完成的工作。我想到的另一个选择是运行两个查询——一个完全通过 Sequelize 获取基本数据,第二个只是获取计算数据,然后将计算数据复制到 JavaScript 中的对象。

【问题讨论】:

  • 您找到解决方案了吗?
  • @Clarkie,我能够使用视图来完成它,所以不理想,但有效。

标签: node.js sequelize.js


【解决方案1】:

我最终做的是在数据库中创建一个视图,然后为该视图定义一个 sequelize 定义,就像它是一个表一样,并包含计算字段,因为它是视图的一部分。

这很好,但并不理想。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多