Eri*_* H. 33 auto-increment node.js sequelize.js postgresql-9.1
Sequelize的文件并没有详细说明autoIncrement.它只包括以下示例:
// autoIncrement can be used to create auto_incrementing integer columns
incrementMe: { type: Sequelize.INTEGER, autoIncrement: true }
Run Code Online (Sandbox Code Playgroud)
基于此示例,我有以下代码:
db.define('Entries', {
id: {
type: Seq.INTEGER,
autoIncrement: true,
primaryKey: true
},
title: {
type: Seq.STRING,
allowNull: false
},
entry: {
type: Seq.TEXT,
allowNull: false
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我想创建一个条目时,我想做这样的事情:
models.Entry.create({title:'first entry', entry:'yada yada yada'})
Run Code Online (Sandbox Code Playgroud)
但是,当我执行该代码时,我得到一个数据库错误:
列"id"中的空值违反非空约束
我会假设Sequelize会将整数放入我的身份或定义数据库表来自行完成.显然不是?我在这里缺少什么来确保id自动递增和填充?
非常感谢.
Yac*_*gui 23
通常Sequelize.js适应数据库.因此autoincrement属性对应于PostgreSQL中的串行类型.
我已经使用过Sequelize,我记得你不需要将id指定为主键.Sequelize会为你做的.
尝试不添加id属性,看看Sequelize是否不会为你添加它.
mxg*_*grn 10
omitNull默认情况下,config选项为false.设置为true,idPostgres将负责:
sequelize = new Sequelize('mydb', 'postgres', null, {
host: 'localhost',
port: 5432,
dialect: 'postgres',
omitNull: true
})
Visitor = sequelize.define('visitor', {
email: Sequelize.STRING
})
Visitor.create({email: 'foo@bar.com'})
Run Code Online (Sandbox Code Playgroud)
小智 7
如果我在模型中手动添加“id”字段(在这种情况下,Sequelize 不会自动添加它),它对我有用,如下所示:
Visitor = sequelize.define('visitor', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
email: Sequelize.STRING
})
Run Code Online (Sandbox Code Playgroud)
结果 SQL 命令是:CREATE TABLE IF NOT EXISTS "visitor" ("id" SERIAL, "email" varchar(255)...
| 归档时间: |
|
| 查看次数: |
36034 次 |
| 最近记录: |