【问题标题】:Alias Sequelize别名续集
【发布时间】:2021-10-04 13:25:03
【问题描述】:

我在 sequelize 中有这个查询:

    Domicilio.hasMany(User, {foreignKey: 'UserId'});
    const abonados = await Domicilio.findAll({include: User});

结果如下:

选择domicilio.DomicilioId, _users.UserId AS _users.UserId, _users.UserName AS _users.UserName, _users.@987654332,@AS @987654332 @.Password AS _users.Password, _users.Documento AS _users.Documento, _users.Cuit AS _users.Cuit, @98765434@42@.Email AS Email9876 FechaBajada AS _users.FechaBajada, _users.FechaContrato AS _users.FechaContrato, _users.FechaNacimiento AS _users.FechaNacimiento, _users.Phone AS _users.Phone, _users.@987654358 @ AS _users.FailedPasswordCount, _users.IsActive AS _users.IsActive, _users.IsLocked AS _users.IsLocked, _users.IsTestUser AS _users.IsTestUser, _users.LastLoginDate AS _users.LastLoginDate, _users.createdAt AS _users.createdAt, _users.createdBy AS @987654377 @, _users.deletedAt AS _users.deletedAt, _users.deletedBy AS _users.deletedBy, _users.updatedAt AS _users.updatedAt, _users._users9876 _usersCondicionIVAIdas_users.CondicionIVAId_usersOnuIdas@987654395 _usersdomicilio.DomicilioId = _users.UserId;

但我不需要表_user 的每一列的别名。例如 _user.UserId 我只需要每列的名称而不需要别名。有没有办法解决这个问题?

【问题讨论】:

    标签: mysql sequelize.js


    【解决方案1】:

    有一些方法可以改变返回列的值

    • 首先,我建议您只获取真正需要的列 由你在模型端点这样响应是简洁的。

      请参考下面的代码,您可以在其中了解如何提供 关联中的别名,您在其中提供的别名就是那个 在包含期间使用它,您可以摆弄以获得 期望的行为。此外,您可以使用选项调整您的 findAll 参数如{raw: true}

      官方文档:

      https://sequelize.org/master/manual/assocs.html

      https://sequelize.org/master/class/lib/model.js~Model.html#static-method-findAll

      Ship.belongsTo(Captain, { as: 'leader' }); // This creates the `leaderId` foreign key in Ship.
      
      // Eager Loading no longer works by passing the model to `include`:
      console.log((await Ship.findAll({ include: Captain })).toJSON()); // Throws an error
      // Instead, you have to pass the alias:
      console.log((await Ship.findAll({ include: 'leader' })).toJSON());
      // Or you can pass an object specifying the model and alias:
      console.log((await Ship.findAll({
        include: {
          model: Captain,
          as: 'leader'
        }
      })).toJSON());
      


    • 最后,您可以在属性中使用别名来自定义值的键 任何你喜欢的东西

      const abonados = await Domicilio.findAll({
         include: User,
         attributes: [['UserId', 'newUserId'], ['UserName 'newUserName']]
      });
      

    P.S:literal 有时也会派上用场。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-20
      • 2013-03-20
      • 1970-01-01
      • 2020-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多