从远程数据库中,我检索表的模式并获取以下形式的JSON对象:
{ Id:
{ type: 'INT',
allowNull: false,
defaultValue: null,
primaryKey: false },
Prefix:
{ type: 'NVARCHAR',
allowNull: true,
defaultValue: null,
primaryKey: false },
FirstName:
{ type: 'NVARCHAR',
allowNull: true,
defaultValue: null,
primaryKey: false },
Assets:
{ type: 'INT',
allowNull: false,
defaultValue: null,
primaryKey: false },
Role:
{ type: 'NVARCHAR',
allowNull: true,
defaultValue: null,
primaryKey: false },
}
我想将每个列的type
(此示例中为Id,Prefix,FirstName,Assets,Role)转换为DataTypes.INTEGER
或DataTypes.STRING
形式的内容,以便最后我们得到:
{ Id:
{ type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
primaryKey: false },
Prefix:
{ type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
primaryKey: false },
FirstName:
{ type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
primaryKey: false },
Assets:
{ type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
primaryKey: false },
Role:
{ type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
primaryKey: false },
}
请注意区别,type
值不再是字符串。
最初我正在尝试以下方法:
var DataTypes = {
NVARCHAR: 'STRING',
INT: 'INTEGER',
VARCHAR: 'STRING',
DATETIME: 'DATE',
FLOAT: 'FLOAT',
NCHAR: 'STRING'
}
Object.keys(schema).forEach(function(fieldName) {
types[schema[fieldName]['type']] ? schema[fieldName]['type'] = 'DataTypes.'+types[schema[fieldName]['type']] : console.log('Could not find type: ' + schema[fieldName]['type'])
})
然后我会"DataTypes.STRING"
而不是DataTypes.STRING
答案 0 :(得分:0)
我从未使用您在评论Sequelize中提到的链接,但快速浏览一下他们的文档就会显示您定义新模型的方式:
const WhateverYouWant = sequelize.define('whatever', {
Id : { type: DataTypes.INTEGER, allowNull: false,
defaultValue: null, primaryKey: false},
// other columns you have...
});
查看该示例,似乎DataTypes
是一个对象,而INTEGER
是其库中的属性。因此,如果您引用他们的库,那么您将能够使用这些类型。