i.b*_*rod 2 mysql sql node.js sequelize.js
我正在尝试在Sequelize模型内为我的SQL列之一创建一个简单的非唯一索引。我试图按照这篇文章:如何在sequelize中的多个列上定义唯一索引。
这是我的代码:
module.exports = (sequelize, DataTypes) => {
const Item = sequelize.define('Item', {
itemId: DataTypes.STRING,
ownerId: DataTypes.INTEGER,
status: DataTypes.STRING,
type: DataTypes.STRING,
nature: DataTypes.STRING,
content: DataTypes.STRING,
moment: DataTypes.BIGINT,
indexes:[
{
unique: 'false',
fields:['ownerId']
}
]
});
return Item;
};
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
未处理的拒绝SequelizeDatabaseError:您的SQL语法有错误。检查与您的MariaDB服务器版本相对应的手册,以在第1行的'[object Object],
createdAtDATETIME NOT NULL,updatedAtDATETIME NOT NULL,P' 附近使用正确的语法
我在server.js文件中的代码是这样的:
models.sequelize.sync().then(function () {
server.listen(port, () => {
console.log('server ready')
})
});
Run Code Online (Sandbox Code Playgroud)
我的设置有什么问题?使用Sequelize还有其他方法吗?
差不多好了。您应该在新对象中添加索引,如下所示:
module.exports = (sequelize, DataTypes) => {
const Item = sequelize.define('Item', {
itemId: DataTypes.STRING,
ownerId: DataTypes.INTEGER,
status: DataTypes.STRING,
type: DataTypes.STRING,
nature: DataTypes.STRING,
content: DataTypes.STRING,
moment: DataTypes.BIGINT
},
{
indexes:[
{
unique: false,
fields:['ownerId']
}
]
});
return Item;
};
Run Code Online (Sandbox Code Playgroud)
它也可以在单一迁移中工作。
就我而言,只需在迁移文件中的 createTable 方法之后执行 addIndex
移民:
return queryInterface.createTable('Item', {
// columns...
}).then(() => queryInterface.addIndex('Item', ['OwnerId']))
.then(() => {
// perform further operations if needed
});
Run Code Online (Sandbox Code Playgroud)
它在迁移文件中对我有用。
| 归档时间: |
|
| 查看次数: |
2270 次 |
| 最近记录: |