node.js - Sequelize包括在数据库中计算的计算字段?

标签 node.js sequelize.js

在 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 中的对象。

最佳答案

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

这工作得很好,但并不理想。

关于node.js - Sequelize包括在数据库中计算的计算字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26209197/

相关文章:

javascript - 如何修复 router.get 中相互依赖的两个 Knex MySQL 查询

node.js - 在 Visual Studio 2013 上运行波纹模拟器时出现问题

javascript - 有没有办法在 Op.op sequelize 中循环遍历许多参数的对象

node.js - 如何在 sequelize 连接对象中设置应用程序名称?

express - 我怎样才能有一个 Sequelize 复合键(非唯一的,唯一的)对,然后用它来映射关联?

javascript - ".findOneAndUpdate()"未正确更新数据库(Mongodb 和 Node.js)

javascript - JWT 登录 - 在中间件中未找到授权 token

javascript - 要求 sequilize 模块在某些快速应用程序文件中返回未定义

node.js - 关联 sequelize 3 个表,多对多

express - 使用 Node Express 路由后数据存储在错误的表中