我在 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 的表中,该表如下所示:

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

    所以最后帮我显示组数:

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

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

    如果我在 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/

    10-09 21:47