我在 mysql 中有三个表
这是我的表结构:
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'
});
我的场景:
我的项目中有两个 UI:
1.联系方式
2.组
STEP 1: 第一个用户可以添加组,然后用户会去创建新的联系人,这个联系人可能包含多个组或没有组 (组数据来自组表的下拉列表,用户在 STEP 1 中完成此操作 )
例如实时场景:
我是进入应用程序的用户,
第 1 步: 我将添加名为 'angulargroup' 的新组。
第 2 步: 我将在联系人中添加我的详细信息并在下拉列表中选择 angulargroup ,这样我就可以属于 angulargroup
现在用户交互结束。
现在我得到了联系人 ID 和组 ID,我将此组 ID 和联系人 ID 存储在名为 ContactGroup 的表中,该表如下所示:
所以最后帮我显示组数:
我在 angulargroup 中只添加了一个联系人,所以我想在下图中将 CONTACT COUNT 显示为 1:
如果我在 angulargroup 中添加了两个 联系人 来代替 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);
});
};
关于mysql - 如何使用 sequelize(mysql) 用 angularjs + nodejs 计算数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47300567/