【问题标题】:Objection.js - Realtion with pivot tableObjection.js - 与数据透视表的关系
【发布时间】:2021-01-19 05:29:23
【问题描述】:

我很难理解我应该如何在 objections.js 中建模多对多关系。

基本上我有一个包含用户、游戏和用户分数表的应用程序。账号可以在游戏中得分。

表格是这样的:

用户表

  • 身份证
  • 用户名

游戏桌

  • 身份证
  • 姓名

用户评分表

  • 身份证
  • 用户ID
  • 游戏ID
  • 得分

如何创建关系?

我想向登录的用户显示所有游戏的列表 如果他在比赛中有得分,那么他的得分

谢谢!!

【问题讨论】:

    标签: javascript node.js express knex.js objection.js


    【解决方案1】:

    这与异议文档中Join table extra properties 中概述的要求基本相同。您可以调整它以创建 usersgamesusers_games 表。那么您的User 模型可能如下所示:

    class User extends Model {
      static get relationMappings() {
        return {
          relation: Model.ManyToManyRelation,
          modelClass: Game,
          join: {
            from: 'users.id',
            through: {
              from: 'users_games.user_id',
              to: 'users_games.game_id',
              extra: ['score']
            },
            to: 'game.id'
          }
        };
      }
    }
    

    在这里您可以看到我们在users_games 连接表中添加了一个额外的score 列。然后我想你会得到一个游戏列表,比如:

    const user = await User.query().findOne({ username: 'wombatsarefluffy' });
    const games = await user.$relatedQuery('games');
    

    有关如何构建迁移的示例,请参阅文档页面。

    【讨论】:

      猜你喜欢
      • 2017-07-22
      • 2014-08-26
      • 1970-01-01
      • 1970-01-01
      • 2020-03-19
      • 1970-01-01
      • 1970-01-01
      • 2019-01-25
      • 1970-01-01
      相关资源
      最近更新 更多