Pas*_*ara 8 postgresql orm node.js sequelize.js
我试图sequelize使用以下用户模型对我的测试数据库执行数据库迁移,作为参考,之前也进行过迁移。
const User = Sequelize.define('user', {
user_id: {
type: sequelize.STRING,
primary_key: true,
},
firstName:{
type: sequelize.STRING,
allowNull: false
},
lastName:{
type: sequelize.STRING
},
dob:{
type: sequelize.DATE
},
birth_time:{
type: sequelize.TIME,
allowNull: true
},
gender:{
type: sequelize.ENUM,
values: ['male', 'female']
}
});
Run Code Online (Sandbox Code Playgroud)
但是,在执行此操作时,一旦执行了一些数据库查询,我就会收到以下错误。
Unhandled rejection SequelizeDatabaseError: type "enum_yyy" already exists
at Query.formatError (/home/caesar/Workspace/Devmetry/Projects/xxx/node_modules/sequelize/lib/dialects/postgres/query.js:366:16)
at /home/caesar/Workspace/Devmetry/Projects/xxx/node_modules/sequelize/lib/dialects/postgres/query.js:72:18
at tryCatcher (/home/caesar/Workspace/Devmetry/Projects/xxx/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/home/caesar/Workspace/xxx/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/home/caesar/Workspace/Devmetry/Projects/xxx/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/home/caesar/Workspace/Devmetry/Projects/xxx/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/home/caesar/Workspace/Devmetry/Projects/xxx/node_modules/bluebird/js/release/promise.js:689:18)
at Async._drainQueue (/home/caesar/Workspace/Devmetry/Projects/xxx/node_modules/bluebird/js/release/async.js:133:16)
at Async._drainQueues (/home/caesar/Workspace/Devmetry/Projects/xxx/node_modules/bluebird/js/release/async.js:143:10)
at Immediate.Async.drainQueues [as _onImmediate] (/home/caesar/Workspace/Devmetry/Projects/xxx/node_modules/bluebird/js/release/async.js:17:14)
at processImmediate (internal/timers.js:456:21)
at process.topLevelDomainCallback (domain.js:137:15)
Run Code Online (Sandbox Code Playgroud)
我使用的方法db.sync如下。
Sequelize.sync({ alter: true })
.then(() => {
console.log(`Database & tables generated!`)
});
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议解决此问题,而无需进行硬性完整的数据库迁移。
小智 8
看来是postgres的问题。但是您可以使用此技术。有用。
gender: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: 'male',
validate: {
customValidator: (value) => {
const enums = ['male', 'female']
if (!enums.includes(value)) {
throw new Error('not a valid option')
}
}
}
},
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4159 次 |
| 最近记录: |