我想在我的sequelize对象上定义一个自定义查找器。例如,假设我有一个Order模型。自定义数据检索/查找器
var Orders = sequelize.define('Orders', {
...
})
我有一个复杂的查询,我想在各个地方重复使用。
var sql = 'SELECT'
+ ' CONCAT_WS(\':\', `type`, `id`) AS `id`'
+ ' , `type`'
+ ' , `name`'
+ ' , `amount`'
+ ' , `quantity`'
+ ' , `total`'
+ ' , `createdAt`'
+ ' FROM ('
+ ' SELECT'
+ ' OrderItems.id AS `id`'
+ ' , \'item\' AS `type`'
+ ' , Items.name AS `name`'
+ ' , Items.price AS `amount`'
+ ' , OrderItems.quantity AS `quantity`'
+ ' , OrderItems.quantity * Items.price AS `total`'
+ ' , OrderItems.createdAt AS `createdAt`'
+ ' FROM OrderItems'
+ ' INNER JOIN Items ON Items.id = OrderItems.ItemId'
+ ' WHERE OrderId = :OrderId'
+ ' UNION'
+ ' SELECT'
+ ' OrderPayments.id AS `id`'
+ ' , \'payment\' AS `type`'
+ ' , Payments.name AS `name`'
+ ' , OrderPayments.amount AS `amount`'
+ ' , 0 AS `quantity`'
+ ' , OrderPayments.amount AS `total`'
+ ' , OrderPayments.createdAt AS `createdAt`'
+ ' FROM OrderPayments'
+ ' INNER JOIN Payments ON Payments.id = OrderPayments.PaymentId'
+ ' WHERE OrderId = :OrderId'
+ ') OrderLines'
+ ' ORDER BY createdAt DESC'
下面是我想如何运行查询。
Orders.find(123).success(function(order) {
order.getDataFromMyComplexQuery('arg1', 'arg2').success(function(results){
// Do something with the results
})
});
或者像:
Orders.getDataFromMyComplexQuery('arg1', 'arg2').success(function(results){
// Do something with the results
})
这就像一个存储过程,但在Sequelize。
感谢您提供答案。这不是我想要的。 –