如何使用sequelize(mysql)来计算angularjs + nodejs的数据?
我在mysql中有三个表
- 联系
- 组
- 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); }); };