【问题标题】:How to use groupby method to get table specific datas of particular id in sequelize postgres如何使用groupby方法在sequelize postgres中获取特定id的表特定数据
【发布时间】:2019-02-12 15:52:30
【问题描述】:

我有三张桌子; 1. 票 2.登录 3.票务会员

我的ticketmember 表中有tickedId 和memberId(这来自登录表),我使用sequelize include 方法完成了这个( 对于在登录表中使用“as”的memberId)

在我的应用中,member 可以有多个 ticket。我的 ticketmember 表数据如下所示

我要拿会员的所有票, 例如:成员 1 有三个 ticketId 我想找到特定成员的数据。

我正在写api来获取ticketmember表:

我的 api.js:

exports.getTicketMemberAll = (req, res) => {
    TicketMember.findAll({
        include: [{
          model: Ticket
        }, {
          model: Login,
          as: 'member',
        }],
      })
      .then(data => {
        res.status(200).send(data)
      })
      .catch(err => {
        res.status(400).send(err.message)
      });
  };

我的回答:

[
    {
      id: 1,
      isActive: true,
      ticketId: 1,
      ticket: {
        status: "New",
      }
      memberId: 3,
      member: {
        username: "zen",
      }
    }
    {
      id: 1,
      isActive: true,
      ticketId: 2,
      ticket: {
        status: "New",
      }
      memberId: 3,
      member: {
        username: "zen",
      }
    }
  ]

我想要的结果:

我在两个对象中有 memberId: 3,所以我想将这些对象与相关票证结合起来。

【问题讨论】:

    标签: javascript json node.js postgresql sequelize.js


    【解决方案1】:

    这是一个多对多关联的情况,因此您可以使用 Sequelize 的此功能

    Ticket.belongsToMany(Member, {through: 'TicketMember'});
    Member.belongsToMany(Ticket, {through: 'TicketMember'});
    

    然后你就可以像这样访问getter和setter方法了

    ticket.getMembers and member.getTickets
    

    查询可以使用

    Member.findAll({
      include: [{
        model: Ticket,
      }]
    });
    

    请参考 Belongs-To-Many 关联部分here

    如果有任何错误,应该可以告诉我

    【讨论】:

    • it throwing error: error: column "TicketMember.id" 必须出现在 GROUP BY 子句中或在聚合函数中使用。
    • 你能分享你在问题中需要的回复格式吗
    • 我不知道分组响应将如何出现。所以我没有预期的格式。
    • 只是分享粗略的要求,我会写查询
    • 您需要像这个会员1 => 票1, 票2, 会员2 => 票2, 票3 对吗?
    猜你喜欢
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 2021-08-14
    • 1970-01-01
    • 2020-04-24
    相关资源
    最近更新 更多