节点sequelize 自动生成的列(created_at、updated_at 不带下划线)

问题描述 投票:0回答:2

我是续集新手,我使用指定“--underscored”的命令行来创建模型。

这是用户模型:

    'use strict';
module.exports = (sequelize, DataTypes) => {
    const User = sequelize.define('User', {
        email: DataTypes.STRING,
        first_name: DataTypes.STRING,
        last_name: DataTypes.STRING,
        company_id: DataTypes.INTEGER
    }, {
        underscored: true,
    });
    User.associate = function (models) {
        // associations can be defined here
        User.belongsTo(models.Company);
        User.belongsToMany(models.WorkingDay, { through: 'UsersWorkingDays', as: 'days' })
    };
    return User;
};

这是公司模型:

'use strict';
module.exports = (sequelize, DataTypes) => {
    const Company = sequelize.define('Company', {
        name: DataTypes.STRING
    }, {
        underscored: true,
    });
    Company.associate = function (models) {
        // associations can be defined here
        Company.hasMany(models.User, { as: 'employees'})
    };

    return Company;
};

这些是数据库: enter image description here enter image description here

这是API

router.get("/:id", async (req, res) => {

    let company = await Company.findByPk(req.params.id, { include: ['employes'] });

    res.json(company);
});

这是结果:

{
    "id": 13,
    "name": "Huel - Kihn",
    "createdAt": "2019-12-01T03:55:41.000Z",
    "updatedAt": "2019-12-01T03:55:41.000Z",
    "employees": [
        {
            "id": 8,
            "email": "[email protected]",
            "first_name": "Koby",
            "last_name": "Jaskolski",
            "company_id": 13,
            "createdAt": "2019-12-01T03:55:41.000Z",
            "updatedAt": "2019-12-01T03:55:41.000Z",
            "CompanyId": 13
        },
        {
            "id": 9,
            "email": "[email protected]",
            "first_name": "Althea",
            "last_name": "O'Hara",
            "company_id": 13,
            "createdAt": "2019-12-01T03:55:41.000Z",
            "updatedAt": "2019-12-01T03:55:41.000Z",
            "CompanyId": 13
        }
    ]
}

如您所见,结果中的createdAt和updatedAt没有下划线。但这两个栏目都带有下划线。有什么方法可以让sequelize使用数据库列名吗?

并且“员工”字段中多了一个“CompanyId”列,如何防止显示?

我尝试在网上搜索但没有找到任何解决方案。

感谢您的帮助!

node.js sequelize.js
2个回答
0
投票

对于任何偶然发现这一点的人,Sequelize 自动生成的每个时间戳都有一个选项。

这里是docs中的参考,或者如果您想直接查看code

sequelize.define('Model', { ... }, {
  createdAt: 'created_at',
  updatedAt: 'updated_at',
  deletedAt: 'deleted_at' // if you have paranoid on as well
});

// OR

Model.init({ ... }, {
  createdAt: 'created_at',
  updatedAt: 'updated_at',
  deletedAt: 'deleted_at' 
});

0
投票

不确定这现在对您是否有帮助,但在模型生成过程中可以使用

--underscored

例如

npx sequelize-cli model:generate --name trades_orders --underscored --attributes execution_id:string,quantity:decimal,security_id:number,order_creation_time:date

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.