Sequelize包括在数据库中计算的计算字段?

Sam*_*eff 10 node.js sequelize.js

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

我知道我可以在DAO中添加一个自定义getter来计算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"
        }
};
Run Code Online (Sandbox Code Playgroud)

有什么办法吗?

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

Sam*_*eff 3

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

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