我是续集新手,我使用指定“--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;
};
这是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”列,如何防止显示?
我尝试在网上搜索但没有找到任何解决方案。
感谢您的帮助!
对于任何偶然发现这一点的人,Sequelize 自动生成的每个时间戳都有一个选项。
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'
});
不确定这现在对您是否有帮助,但在模型生成过程中可以使用
--underscored
。
例如
npx sequelize-cli model:generate --name trades_orders --underscored --attributes execution_id:string,quantity:decimal,security_id:number,order_creation_time:date
希望这有帮助。