如何使用sequelize(mysql)来计算angularjs + nodejs的数据?

我在mysql中有三个表

  1. 联系
  2. ContactGroup

这是我的表结构:

var Contact = sequelize.define('contact', { gsm: { type: Sequelize.STRING, unique: true, required: true }, firstName: Sequelize.STRING, lastName: Sequelize.STRING, street: Sequelize.STRING, city: Sequelize.STRING, region: Sequelize.STRING, postcode: Sequelize.STRING, dob: Sequelize.DATE, email: { type: Sequelize.STRING, unique: true, defaultValue: true }, company: Sequelize.STRING, url: Sequelize.STRING, country: Sequelize.STRING, data1: Sequelize.STRING, data2: Sequelize.STRING, data3: Sequelize.STRING, // resetPasswordToken: Sequelize.STRING, // resetPasswordExpires: Sequelize.DATE, // lastLoggedIn: Sequelize.DATE }) var Group = sequelize.define('group', { groupname: { type: Sequelize.STRING, unique: true, required: true }, }) var ContactGroup = sequelize.define('contactgroup', { /* Empty */ }) ContactGroup.belongsTo(Contact, { onDelete: 'CASCADE' }); ContactGroup.belongsTo(Group, { onDelete: 'CASCADE' }); Group.hasMany(ContactGroup, { onDelete: 'CASCADE' }); 

我的情景:我的项目中有两个用户界面:

1.联系方式2.团队

步骤1:首先用户可以添加组,然后用户将创build新的联系人,该联系人可能包含多个组或不包含组(群组数据作为组表下拉列表,用户在步骤1完成此操作

例如,实时情况:

我是进入应用程序的用户,

第1步:我将添加一个名为“angular度”的新组。

第2步:我将添加我的联系人的细节,并在下拉列表中selectangular度组 ,所以我可以属于angular组现在用户交互。

现在我有联系人ID和组ID,我存储了这个组ID和联系ID在我的表叫ContactGroup看起来像这样:

在这里输入图像描述

所以最后帮我展示一下群体的数量:

我只在angulargroup中添加了一个联系人,所以我想在下图中显示CONTACT COUNT为1:

在这里输入图像描述

如果我添加了两个联系人angular度组在contactcount的地方,我想显示contactcount为2

我的api.js代码:

 exports.getNewGroup = function(req, res) { Group.findAndCountAll({ attributes: ['id', [sequelize.fn('COUNT', sequelize.col('contactgroups.groupId')), 'contactCount' ]], include: [{ model: ContactGroup, }] }).then(function(data) { return res.status(200).send(data); }).catch(function(err) { return res.status(400).send(err.message); }); }; 

现在如何在UI中显示这个:

 table.table tr th(style='display : none;') S.no th Name th Contacts Count tr(ng-repeat='group in groups | filter:test') td(style='display : none;') {{$index+1}} td {{group.groupname}} td {{group.contactId}} 

最后我得到了它:

答案是:

我的api.js:

 exports.getNewGroup = function (req, res) { Group.findAll({ attributes: { include: [ [sequelize.fn('COUNT', sequelize.col('contactgroups.groupId')), 'contactsCount'] ], }, include: [{ model: ContactGroup, attributes: [], }], group: ['Group.id'], raw: true }).then(function (data) { return res.status(200).send(data); }).catch(function (err) { return res.status(400).send(err.message); }); };