js查询通过关系获得总数
Sequelize.js query to get total count through relationship
我使用sequelize来获取一个关系的总数。我需要一个customerId
它在父表中通过一个数据透视表连接。普通查询看起来像这样:
SELECT count(p.*) FROM parcels as p
LEFT JOIN orders_parcels as op ON op."parcelId" = p.id
LEFT JOIN orders as o ON op."orderId" = o.id
WHERE o."customerId"=1
这很好。但不确定如何获得序列化查询。
Parcel.findAndCountAll();
编辑:OrderParcel
var OrderParcel = service.sequelize.define('OrderParcel', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
}
}, {
tableName: 'orders_parcels',
freezeTableName: true,
paranoid: true
});
module.exports = OrderParcel;
var Order = require('./Order');
OrderParcel.belongsTo(Order, {
as: 'Order',
foreignKey: 'orderId'
});
var Parcel = require('../parcel/Parcel');
OrderParcel.belongsTo(Parcel, {
as: 'Parcel',
foreignKey: 'parcelId'
});
一种方法是使用sequelize.query
:
因为经常有这样的用例,它只是更容易执行原始/已经准备好的SQL查询,可以利用该函数
sequelize.query
.
var query = "SELECT count(p.*) FROM parcels as p" +
" LEFT JOIN orders_parcels as op ON op."parcelId" = p.id" +
" LEFT JOIN orders as o ON op."orderId" = o.id" +
" WHERE o.customerId=1;";
sequelize.query(query, { type: sequelize.QueryTypes.SELECT}).success(function(count){
console.log(count); // It's show the result of query
res.end();
}).catch(function(error){
res.send('server-error', {error: error});
});
Raw Queries docs
假设您已经定义了关联,您可以使用Model.findAndCountAll。它看起来像这样:
Parcel.findAndCountAll({
include: [{
model: OrderParcel,
required: true,
include: [{
model: Order,
where: {
customerId: idNum
}
}]
}]
}).then(function(result) {
});
我完全同意Evan Siroky的方法,但是代码必须简化才能正常工作:
Parcel.findAndCountAll({
include: [{
model: Order,
where: {
customerId: idNum
},
duplicating: false // Add this line for retrieving all objects
}]
}).then(function(result) {
console.log('Rows: ' + result.rows + ' Count: ' + result.count)
});
记得用belongsToMany方法连接你的模型!
相关文章:
- 返回解析云代码关系查询的结果
- 解析云代码-使用关系数据嵌套多个查询
- 查询解析表并急切地获取关系以进行匹配
- 关系优先查询
- CRM 2011 OData 关系查询教程
- Parse.com是否允许在关系查询中包含指针
- 一对多关系的简单解析查询
- 解析Javascript-如何通过关系对象进行查询's属性
- Parse(js)和嵌套查询中的一对多关系
- 多对多关系-在查询-Keytonejs中填充相关数据
- 在查询Parse.com关系数据时,我应该如何思考
- 使用关系作为Ember.Data的查询
- 解析查询Javascript - "contains"关于关系数据
- 链接关系查询-我可以创建一个javascript关系以及css
- 多个关系查询
- 关系查询
- 如何在云代码中执行关系查询
- 解析云代码关系查询
- 将关系查询数据添加到主JSON结果中
- 分析云代码关系查询语法