在 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/