Sequelize.js 为什么Sequelize会创建一个名为';文本';而不是以模型attibute命名

Sequelize.js 为什么Sequelize会创建一个名为';文本';而不是以模型attibute命名,sequelize.js,Sequelize.js,为了使代码更具可读性,我创建了consts来存储常用的列定义。当我选择使用这些常量时,它有一个奇怪的结果,即后端数据库在没有名为“text”的属性的情况下有一个“text”列,并且它没有正确存储数据 我想知道为什么 以下是我的常数: const-StringNullable={type:Sequelize.DataTypes.STRING};//注:默认值由GraphQL数据源设置。 const StringRequired={type:Sequelize.DataTypes.STRING,al

为了使代码更具可读性,我创建了
const
s来存储常用的列定义。当我选择使用这些常量时,它有一个奇怪的结果,即后端数据库在没有名为“text”的属性的情况下有一个“text”列,并且它没有正确存储数据

我想知道为什么

以下是我的常数:

const-StringNullable={type:Sequelize.DataTypes.STRING};//注:默认值由GraphQL数据源设置。
const StringRequired={type:Sequelize.DataTypes.STRING,allowNull:false};
下面是我认为定义Sequelize模型的两种等效方法:

const messages=sequelize.define('messages'){
deviceType:{type:Sequelize.DataTypes.STRING},
协议:{type:Sequelize.DataTypes.STRING},
源:{type:Sequelize.DataTypes.STRING},
dest:{type:Sequelize.DataTypes.STRING},
messageType:{type:Sequelize.DataTypes.STRING},
唯一标识:{type:Sequelize.DataTypes.UUID,allowNull:false},
操作:{type:Sequelize.DataTypes.STRING,allowNull:true},
有效负载:{type:Sequelize.DataTypes.TEXT},
managedBy:{type:Sequelize.DataTypes.STRING},
转发:{type:Sequelize.DataTypes.STRING(20),defaultValue:'No'},
已确认:{type:Sequelize.DataTypes.BOOLEAN},
状态:{type:Sequelize.DataTypes.STRING,defaultValue:“New”},
子状态:{type:Sequelize.DataTypes.STRING(22)},
});
const altMessages=sequelize.define('altMessages'{
设备类型:{…StringRequired},
协议:{…StringRequired},
来源:{…StringRequired},
目标:{…StringRequired},
消息类型:{…StringRequired},
唯一标识:{type:Sequelize.DataTypes.UUID,allowNull:false},
操作:Sequelize.DataTypes.STRING,
有效负载:Sequelize.DataTypes.TEXT,
managedBy:{…StringRequired},
转发:{type:Sequelize.DataTypes.STRING(20),defaultValue:'No'},
已确认:Sequelize.DataTypes.BOOLEAN,
状态:{…StringRequired,defaultValue:“New”},
子状态:Sequelize.DataTypes.STRING,
});
在我的模式中还有两个与消息模型具有外键关系的附加模型。这些键是使用messages表的
.hasMany()
.belongsTo
添加的,但我认为它们不相关,所以将它们忽略

我使用这段代码利用Sequelize的模式特性来说明两种模型的区别:

sequelize.sync({logging:false})
。然后((结果)=>{
console.log('Sync completed OK.Models:\r\n',result.Models');
返回messages.schema('messages');
})
。然后((结果)=>{
console.log(“消息”);
for(const key in result.fieldRawAttributesMap){
console.log(key,result.fieldrawattributemap[key]);
}
返回altMessages.schema('altMessages');
})
。然后((结果)=>{
console.log('altMessages:')
for(const key in result.fieldRawAttributesMap){
console.log(key,result.fieldrawattributemap[key]);
}
})
.catch((e)=>{
console.log(“同步失败”,e);
});
在sqlite上,altMessages在id字段后面包含一个
文本
字段,用于存储
状态
字段:

altMessages:
id {
  type: INTEGER {
    options: {},
    _length: undefined,
    _zerofill: undefined,
    _decimals: undefined,
    _precision: undefined,
    _scale: undefined,
    _unsigned: undefined
  },
  allowNull: false,
  primaryKey: true,
  autoIncrement: true,
  _autoGenerated: true,
  Model: altMessages,
  fieldName: 'id',
  _modelAttribute: true,
  field: 'id'
}
text {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  allowNull: false,
  Model: altMessages,
  fieldName: 'status',
  _modelAttribute: true,
  field: 'text',
  defaultValue: 'New'
}
另一方面,消息模型有一个离散的状态字段,按顺序排列,我希望它是:

status {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  defaultValue: 'New',
  Model: messages,
  fieldName: 'status',
  _modelAttribute: true,
  field: 'status'
}
以下是在sqlite和mariaDb上运行的代码的完整输出:

sqlite:

messages
id {
  type: INTEGER {
    options: {},
    _length: undefined,
    _zerofill: undefined,
    _decimals: undefined,
    _precision: undefined,
    _scale: undefined,
    _unsigned: undefined
  },
  allowNull: false,
  primaryKey: true,
  autoIncrement: true,
  _autoGenerated: true,
  Model: messages,
  fieldName: 'id',
  _modelAttribute: true,
  field: 'id'
}
deviceType {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  Model: messages,
  fieldName: 'deviceType',
  _modelAttribute: true,
  field: 'deviceType'
}
protocol {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  Model: messages,
  fieldName: 'protocol',
  _modelAttribute: true,
  field: 'protocol'
}
source {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  Model: messages,
  fieldName: 'source',
  _modelAttribute: true,
  field: 'source'
}
dest {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  Model: messages,
  fieldName: 'dest',
  _modelAttribute: true,
  field: 'dest'
}
messageType {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  Model: messages,
  fieldName: 'messageType',
  _modelAttribute: true,
  field: 'messageType'
}
uniqueId {
  type: UUID {},
  allowNull: false,
  Model: messages,
  fieldName: 'uniqueId',
  _modelAttribute: true,
  field: 'uniqueId'
}
action {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  allowNull: true,
  Model: messages,
  fieldName: 'action',
  _modelAttribute: true,
  field: 'action'
}
payload {
  type: TEXT { options: { length: undefined }, _length: '' },
  Model: messages,
  fieldName: 'payload',
  _modelAttribute: true,
  field: 'payload'
}
managedBy {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  Model: messages,
  fieldName: 'managedBy',
  _modelAttribute: true,
  field: 'managedBy'
}
forwarded {
  type: STRING {
    options: { length: 20, binary: undefined },
    _binary: undefined,
    _length: 20
  },
  defaultValue: 'No',
  Model: messages,
  fieldName: 'forwarded',
  _modelAttribute: true,
  field: 'forwarded'
}
confirmed {
  type: BOOLEAN {},
  Model: messages,
  fieldName: 'confirmed',
  _modelAttribute: true,
  field: 'confirmed'
}
status {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  defaultValue: 'New',
  Model: messages,
  fieldName: 'status',
  _modelAttribute: true,
  field: 'status'
}
subStatus {
  type: STRING {
    options: { length: 22, binary: undefined },
    _binary: undefined,
    _length: 22
  },
  Model: messages,
  fieldName: 'subStatus',
  _modelAttribute: true,
  field: 'subStatus'
}
createdAt {
  type: DATE { options: { length: undefined }, _length: '' },
  allowNull: false,
  _autoGenerated: true,
  Model: messages,
  fieldName: 'createdAt',
  _modelAttribute: true,
  field: 'createdAt'
}
updatedAt {
  type: DATE { options: { length: undefined }, _length: '' },
  allowNull: false,
  _autoGenerated: true,
  Model: messages,
  fieldName: 'updatedAt',
  _modelAttribute: true,
  field: 'updatedAt'
}
chargePointInstallId {
  type: INTEGER {
    options: {},
    _length: undefined,
    _zerofill: undefined,
    _decimals: undefined,
    _precision: undefined,
    _scale: undefined,
    _unsigned: undefined
  },
  allowNull: true,
  references: { model: 'chargePointInstalls', key: 'id' },
  onDelete: 'SET NULL',
  onUpdate: 'CASCADE',
  Model: messages,
  fieldName: 'chargePointInstallId',
  _modelAttribute: true,
  field: 'chargePointInstallId'
}
waveInstallId {
  type: INTEGER {
    options: {},
    _length: undefined,
    _zerofill: undefined,
    _decimals: undefined,
    _precision: undefined,
    _scale: undefined,
    _unsigned: undefined
  },
  allowNull: true,
  references: { model: 'waveInstalls', key: 'id' },
  onDelete: 'SET NULL',
  onUpdate: 'CASCADE',
  Model: messages,
  fieldName: 'waveInstallId',
  _modelAttribute: true,
  field: 'waveInstallId'
}
altMessages:
id {
  type: INTEGER {
    options: {},
    _length: undefined,
    _zerofill: undefined,
    _decimals: undefined,
    _precision: undefined,
    _scale: undefined,
    _unsigned: undefined
  },
  allowNull: false,
  primaryKey: true,
  autoIncrement: true,
  _autoGenerated: true,
  Model: altMessages,
  fieldName: 'id',
  _modelAttribute: true,
  field: 'id'
}
text {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  allowNull: false,
  Model: altMessages,
  fieldName: 'status',
  _modelAttribute: true,
  field: 'text',
  defaultValue: 'New'
}
uniqueId {
  type: UUID {},
  allowNull: false,
  Model: altMessages,
  fieldName: 'uniqueId',
  _modelAttribute: true,
  field: 'uniqueId'
}
action {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  Model: altMessages,
  fieldName: 'action',
  _modelAttribute: true,
  field: 'action'
}
payload {
  type: TEXT { options: { length: undefined }, _length: '' },
  Model: altMessages,
  fieldName: 'payload',
  _modelAttribute: true,
  field: 'payload'
}
forwarded {
  type: STRING {
    options: { length: 20, binary: undefined },
    _binary: undefined,
    _length: 20
  },
  defaultValue: 'No',
  Model: altMessages,
  fieldName: 'forwarded',
  _modelAttribute: true,
  field: 'forwarded'
}
confirmed {
  type: BOOLEAN {},
  Model: altMessages,
  fieldName: 'confirmed',
  _modelAttribute: true,
  field: 'confirmed'
}
subStatus {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  Model: altMessages,
  fieldName: 'subStatus',
  _modelAttribute: true,
  field: 'subStatus'
}
createdAt {
  type: DATE { options: { length: undefined }, _length: '' },
  allowNull: false,
  _autoGenerated: true,
  Model: altMessages,
  fieldName: 'createdAt',
  _modelAttribute: true,
  field: 'createdAt'
}
updatedAt {
  type: DATE { options: { length: undefined }, _length: '' },
  allowNull: false,
  _autoGenerated: true,
  Model: altMessages,
  fieldName: 'updatedAt',
  _modelAttribute: true,
  field: 'updatedAt'
}
并在Windows Server上的mariaDb上运行:

messages
id {
  type: INTEGER {
    options: {},
    _length: undefined,
    _zerofill: undefined,
    _decimals: undefined,
    _precision: undefined,
    _scale: undefined,
    _unsigned: undefined
  },
  allowNull: false,
  primaryKey: true,
  autoIncrement: true,
  _autoGenerated: true,
  Model: messages,
  fieldName: 'id',
  _modelAttribute: true,
  field: 'id'
}
deviceType {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  Model: messages,
  fieldName: 'deviceType',
  _modelAttribute: true,
  field: 'deviceType'
}
protocol {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  Model: messages,
  fieldName: 'protocol',
  _modelAttribute: true,
  field: 'protocol'
}
source {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  Model: messages,
  fieldName: 'source',
  _modelAttribute: true,
  field: 'source'
}
dest {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  Model: messages,
  fieldName: 'dest',
  _modelAttribute: true,
  field: 'dest'
}
messageType {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  Model: messages,
  fieldName: 'messageType',
  _modelAttribute: true,
  field: 'messageType'
}
uniqueId {
  type: UUID {},
  allowNull: false,
  Model: messages,
  fieldName: 'uniqueId',
  _modelAttribute: true,
  field: 'uniqueId'
}
action {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  allowNull: true,
  Model: messages,
  fieldName: 'action',
  _modelAttribute: true,
  field: 'action'
}
payload {
  type: TEXT { options: { length: undefined }, _length: '' },
  Model: messages,
  fieldName: 'payload',
  _modelAttribute: true,
  field: 'payload'
}
managedBy {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  Model: messages,
  fieldName: 'managedBy',
  _modelAttribute: true,
  field: 'managedBy'
}
forwarded {
  type: STRING {
    options: { length: 20, binary: undefined },
    _binary: undefined,
    _length: 20
  },
  defaultValue: 'No',
  Model: messages,
  fieldName: 'forwarded',
  _modelAttribute: true,
  field: 'forwarded'
}
confirmed {
  type: BOOLEAN {},
  Model: messages,
  fieldName: 'confirmed',
  _modelAttribute: true,
  field: 'confirmed'
}
status {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  defaultValue: 'New',
  Model: messages,
  fieldName: 'status',
  _modelAttribute: true,
  field: 'status'
}
subStatus {
  type: STRING {
    options: { length: 22, binary: undefined },
    _binary: undefined,
    _length: 22
  },
  Model: messages,
  fieldName: 'subStatus',
  _modelAttribute: true,
  field: 'subStatus'
}
createdAt {
  type: DATE { options: { length: undefined }, _length: '' },
  allowNull: false,
  _autoGenerated: true,
  Model: messages,
  fieldName: 'createdAt',
  _modelAttribute: true,
  field: 'createdAt'
}
updatedAt {
  type: DATE { options: { length: undefined }, _length: '' },
  allowNull: false,
  _autoGenerated: true,
  Model: messages,
  fieldName: 'updatedAt',
  _modelAttribute: true,
  field: 'updatedAt'
}
chargePointInstallId {
  type: INTEGER {
    options: {},
    _length: undefined,
    _zerofill: undefined,
    _decimals: undefined,
    _precision: undefined,
    _scale: undefined,
    _unsigned: undefined
  },
  allowNull: true,
  references: { model: 'chargePointInstalls', key: 'id' },
  onDelete: 'SET NULL',
  onUpdate: 'CASCADE',
  Model: messages,
  fieldName: 'chargePointInstallId',
  _modelAttribute: true,
  field: 'chargePointInstallId'
}
waveInstallId {
  type: INTEGER {
    options: {},
    _length: undefined,
    _zerofill: undefined,
    _decimals: undefined,
    _precision: undefined,
    _scale: undefined,
    _unsigned: undefined
  },
  allowNull: true,
  references: { model: 'waveInstalls', key: 'id' },
  onDelete: 'SET NULL',
  onUpdate: 'CASCADE',
  Model: messages,
  fieldName: 'waveInstallId',
  _modelAttribute: true,
  field: 'waveInstallId'
}
altMessages:
id {
  type: INTEGER {
    options: {},
    _length: undefined,
    _zerofill: undefined,
    _decimals: undefined,
    _precision: undefined,
    _scale: undefined,
    _unsigned: undefined
  },
  allowNull: false,
  primaryKey: true,
  autoIncrement: true,
  _autoGenerated: true,
  Model: altMessages,
  fieldName: 'id',
  _modelAttribute: true,
  field: 'id'
}
text {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  allowNull: false,
  Model: altMessages,
  fieldName: 'status',
  _modelAttribute: true,
  field: 'text',
  defaultValue: 'New'
}
uniqueId {
  type: UUID {},
  allowNull: false,
  Model: altMessages,
  fieldName: 'uniqueId',
  _modelAttribute: true,
  field: 'uniqueId'
}
action {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  Model: altMessages,
  fieldName: 'action',
  _modelAttribute: true,
  field: 'action'
}
payload {
  type: TEXT { options: { length: undefined }, _length: '' },
  Model: altMessages,
  fieldName: 'payload',
  _modelAttribute: true,
  field: 'payload'
}
forwarded {
  type: STRING {
    options: { length: 20, binary: undefined },
    _binary: undefined,
    _length: 20
  },
  defaultValue: 'No',
  Model: altMessages,
  fieldName: 'forwarded',
  _modelAttribute: true,
  field: 'forwarded'
}
confirmed {
  type: BOOLEAN {},
  Model: altMessages,
  fieldName: 'confirmed',
  _modelAttribute: true,
  field: 'confirmed'
}
subStatus {
  type: STRING {
    options: { length: undefined, binary: undefined },
    _binary: undefined,
    _length: 255
  },
  Model: altMessages,
  fieldName: 'subStatus',
  _modelAttribute: true,
  field: 'subStatus'
}
createdAt {
  type: DATE { options: { length: undefined }, _length: '' },
  allowNull: false,
  _autoGenerated: true,
  Model: altMessages,
  fieldName: 'createdAt',
  _modelAttribute: true,
  field: 'createdAt'
}
updatedAt {
  type: DATE { options: { length: undefined }, _length: '' },
  allowNull: false,
  _autoGenerated: true,
  Model: altMessages,
  fieldName: 'updatedAt',
  _modelAttribute: true,
  field: 'updatedAt'
}
有人能解释一下我是如何避免创建这个
文本
字段的,因为它的存在给我带来了很大的痛苦,因为我认为Sequelize会“正常工作”

提前谢谢