如何在Sequelize ORM中获取没有前缀表名称的联接数据结果

Muk*_*kur 11 node.js express sequelize.js

我在节点js中使用sequelize ORM。我加入两个表并得到结果,但结果以表名作为前缀返回。

var Sequelize = require('sequelize');
var sequelize = new Sequelize('test', 'root', '', {
    // configuration
  }
});

const db = {};

db.Sequelize = Sequelize;  
db.sequelize = sequelize;

db.role = require('./../model/definitions/role')(sequelize, Sequelize);  
db.admin = require('./../model/definitions/admin')(sequelize, Sequelize);  

  db.admin.findAll({ 
    include: [{ 
      model: db.role,                      
      where:{status : 'Active'},     
    }],
    raw: true      

  }).then(function(result) {
      console.log(result);
  }).catch(function(error) {
    console.log(error);
  }).done();
Run Code Online (Sandbox Code Playgroud)

现在我得到这个结果:

[{
    "id": 36,                
    "email": "test@gmail.com",
    "username": "test",
    "status": "Active",
    "role.role_id": 1,
    "role.role_name": "Admin"
}]
Run Code Online (Sandbox Code Playgroud)

但我需要这个结果:

[{
    "id": 36,                
    "email": "test@gmail.com",
    "username": "test",
    "status": "Active",
    "role_id": 1,
    "role_name": "Admin"
}]
Run Code Online (Sandbox Code Playgroud)

因此,如何从列中删除前缀表名称“ role”。我只需要'role_id'或'role_name'就不需要像'role.role_id','role.role_name'这样的类型的数据

May*_*yur 9

这应该工作,

db.admin.findAll({ 
    attributes: ['id', 'username', 'email', 'status', 'role.role_id', 'role.role_name'],
    include: [{ 
      model: db.role,                      
      where:{status : 'Active'}, 
      attributes: []
    }],
    raw: true
})
Run Code Online (Sandbox Code Playgroud)

我在这里找到这个

  • 如果你想另外重命名列,使用 `[Sequelize.col('role.role_id'), 'rid']` 而不是 `role.role_id`。 (7认同)

小智 5

这应该有效

A是一个与使用名为BB的列关联的表,该表的主键与表中的列关联,该列在标准结果集中显示为,但我们希望这两列被称为bIdIdbidAb.idId & Name

A.belongsTo(B);
        return await A.findAll({
            attributes: [
                [Sequelize.col('b.id'), 'Id'],
                [Sequelize.col('b.name'), 'Name']
            ],
            raw: true,
            where: { /*Some condition*/ },
            include: {
                model: B,
                attributes: [],
                required: true
            },
        });
Run Code Online (Sandbox Code Playgroud)