【问题标题】:With sequelize within express js how to return multiple records from the association table在express js中使用sequelize如何从关联表中返回多条记录
【发布时间】:2020-12-05 17:39:30
【问题描述】:

我正在寻求 Sequelize 关于如何查询多对多关系以及从关联表返回多条记录的帮助

我拥有的是一个通过 usersession 表与会话表关联的用户表。 usersession 表有一个 PK,而 FK 不是唯一的。但是当我运行 sequelize.findall 时,结果不包括关联表中的多行。

module.exports = (sequelize, Sequelize, User, Session) => {
  const UserSessions = sequelize.define("usersession", {
    id: {
      type: Sequelize.INTEGER,
      primaryKey: true,
      autoIncrement: true
    }, 
    sessionDate: {
        type: Sequelize.DATE
      }
});


User.belongsToMany(Session, {through: { model: UserSessions, unique: false }});
Session.belongsToMany(User, {through: { model: UserSessions, unique: false }});

return UserSessions;

};

当我运行 SQL 时,我确实得到了多行,但返回的数据只有一个关联行的数据。

Returned SQL query data

Returned data from sequelize query

这就是我使用 sequelize 查询的方式

Users.findAll({ where: { 'id': req.query.userId }, include: Sessions, require: true })
.then(data => {
    console.log(data);
})

关于如何能够返回多个关联行而无需进行其他查询的任何想法?

【问题讨论】:

    标签: sequelize.js


    【解决方案1】:

    您不能从调用 findAll 的解析器或函数返回数组,但您需要发布更多代码才能确定

    【讨论】:

      【解决方案2】:

      谢谢,但我后来发现在 sequelize 中您可以运行自己的 sql 查询,这将返回我需要的值。

      var sql="SELECT `sessions`.`name` AS `name`, `sessions`.`day` AS `day`, `sessions`.`starttime` AS `starttime`, `sessions`.`duration` AS `duration`, `sessions->usersession`.`id` AS `id`, `sessions->usersession`.`sessionDate` AS `sessionDate` FROM `users` AS `user` LEFT OUTER JOIN ( `usersessions` AS `sessions->usersession` INNER JOIN `sessions` AS `sessions` ON `sessions`.`id` = `sessions->usersession`.`sessionId`) ON `user`.`id` = `sessions->usersession`.`userId` WHERE `user`.`id` = '" + req.query.userId + "'";
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-13
        • 1970-01-01
        • 2018-07-30
        • 2018-06-02
        • 2018-08-29
        相关资源
        最近更新 更多