Как переименовать имя объекта в результате Sequelize? - PullRequest
0 голосов
/ 05 июня 2019

Как я могу изменить имя объекта в результате секвелирования?

Результат в почтальоне "createDate": "2019-05-30", "companyHeader.companyName": "Testcomp"

Iхотите переименовать 'companyHeader.companyName' -> 'companyName'

repository.js

return await models.userHeader.findAndCountAll({
// join t_userheader and t_companyheader with associate
include: [
{
model: models.companyHeader,
attributes: ["companyName"],
// as : 'company'
},
],
attributes: ["id","userId", "userName", "usedCode", "createDate"],
offset: offset,
limit: pageAmount,
order : [['createdate','DESC']],
raw : true
});

Ответы [ 2 ]

0 голосов
/ 13 июня 2019
    module.exports = (sequelize, DataTypes) => {
        const userHeader = sequelize.define("userHeader",{
        id: {
        type: DataTypes.UUID,
        allowNull: false,
        unique: true,
        primaryKey: true,
        autoIncrement: true,
        defaultValue : sequelize.literal('uuid_generate_v4()'),
        },
        userId: {
        type: DataTypes.STRING(),
        field : 'userid'
        },
        password: {
        type: DataTypes.STRING(),
        allowNull: false,
        field : 'password'
        },
        userName: {
        type: DataTypes.STRING(),
        allowNull: true,
        field : 'username'
        },
        usedCode: {
        type: DataTypes.INTEGER,
        allowNull: false,
        field : 'usedcode'
        },
        companyId: {
        type: DataTypes.UUID,
        allowNull: false,
        field : 'companyid'
        },
        createDate: {
        type: DataTypes.DATE(3),
        allowNull: false,
        defaultValue: sequelize.literal("CURRENT_TIMESTAMP(3)"),
        field : 'createdate'
        }
        userHeader.associate = function(models) {
        // associations
        userHeader.belongsTo(models.companyHeader,{
          foreignKey: 'companyId',
          targetKey : 'id',
          // as : 'company'
        })

      };
return userHeader;
};
0 голосов
/ 05 июня 2019

Вам необходимо использовать sequelize.literal для атрибутов первой модели, как это:

return await models.userHeader.findAndCountAll({
  include: [{
    model: models.companyHeader,
    attributes: ["companyName"],
    // as : 'company'
  }],
  attributes: [
    "id",
    "userId", 
    "userName", 
    "usedCode", 
    "createDate",
    [sequelize.literal('"companyHeader"."companyName"'), 'companyName']
  ],
  offset: offset,
  limit: pageAmount,
  order : [['createdate','DESC']],
  raw : true
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...