我尝试创建新实体"OrderInfo",但在请求sql时将OID属性转换为o_i_d
订单信息类:
const { Model, DataTypes } = require('sequelize');
const sequelize = require('../db/db');
class OrderInfo extends Model {}
OrderInfo.init({
OID: {
type: DataTypes.INTEGER,
primaryKey: true,
},
id_client: {
type: DataTypes.INTEGER,
allowNull: false,
},
id_commande: {
type: DataTypes.STRING,
allowNull: false,
},
date: {
type: DataTypes.STRING,
allowNull: false,
},
}, {
sequelize,
createdAt: 'date',
tableName: 'commande_info',
});
module.exports = OrderInfo;
addOrderToOrderInfo: async (idClient, idCommande) => {
const newOrderInfo = await OrderInfo.create({
id_client: idClient,
id_commande: idCommande,
date: `${new Date()}`,
});
序列化错误:
code: 'ER_BAD_FIELD_ERROR',
errno: 1054,
sqlState: '42S22',
sqlMessage: "Unknown column 'o_i_d' in 'field list'",
sql: 'INSERT INTO `commande_info` (`o_i_d`,`id_client`,`id_commande`,`date`,`updated_at`) VALUES (?,?,?,?,?);',
我已经尝试改变OID到oid和当我这样做Sequelize请求'oid'同意,但如果我这样做,我需要更新我的数据库和我所有的其他程序
2条答案
按热度按时间gcuhipw91#
我猜应该是大写字母。试试下面这个:
你可以通过改变下面的例子来验证这一点,如果我是对的,它应该会继续工作:
ORM/mapper通常会应用以下规则:
通常这样做是因为camelCase更容易阅读,但数据库定义几乎总是小写和snake_cased。
mrzz3bfm2#
有趣的是,我不能仅仅通过使用一个简单的sqlite连接和上面的代码来复制这个。也许在配置模块中有一些东西?
但是-对于旧版表,存在:
https://sequelize.org/docs/v6/other-topics/legacy/#fields
所以
就能成功。