Node.js 自动增量如何在NodeJs';什么是续集?
Sequelize的文档并没有对Node.js 自动增量如何在NodeJs';什么是续集?,node.js,postgresql-9.1,auto-increment,sequelize.js,Node.js,Postgresql 9.1,Auto Increment,Sequelize.js,Sequelize的文档并没有对autoIncrement说太多。它仅包括以下示例: // autoIncrement can be used to create auto_incrementing integer columns incrementMe: { type: Sequelize.INTEGER, autoIncrement: true } 基于此示例,我有以下代码: db.define('Entries', { id: { type: Seq.INTEGE
autoIncrement
说太多。它仅包括以下示例:
// autoIncrement can be used to create auto_incrementing integer columns
incrementMe: { type: Sequelize.INTEGER, autoIncrement: true }
基于此示例,我有以下代码:
db.define('Entries', {
id: {
type: Seq.INTEGER,
autoIncrement: true,
primaryKey: true
},
title: {
type: Seq.STRING,
allowNull: false
},
entry: {
type: Seq.TEXT,
allowNull: false
}
}
现在,当我想创建一个条目时,我想做如下操作:
models.Entry.create({title:'first entry', entry:'yada yada yada'})
Visitor = sequelize.define('visitor', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
email: Sequelize.STRING
})
但是,当我执行该代码时,会出现一个数据库错误:
列“id”中的Null值违反not Null约束
我假设Sequelize会为我放入整数,或者定义数据库表来自己做这件事。显然不是?我在这里遗漏了什么来确保id自动递增和填充
非常感谢。通常Sequelize.js会适应数据库。因此,autoincrement属性对应于PostgreSQL中的串行类型 我已经使用了Sequelize,我记得您不需要指定id作为主键。Sequelize会帮你做的
尝试不添加id属性,并查看Sequelize是否不会为您添加该属性。
ommitnull
config选项默认为false。将其设置为true,Postgres将处理id
:
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'})
如果我在模型中手动添加“id”字段(在本例中,Sequelize不会自动添加),它对我有效,如下所示:
models.Entry.create({title:'first entry', entry:'yada yada yada'})
Visitor = sequelize.define('visitor', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
email: Sequelize.STRING
})
结果SQL命令是:
CREATE TABLE IF NOT exister“visitor”(“id”SERIAL,“email”varchar(255)…
在我的例子中,问题是表定义没有更新。如果没有有价值的数据,请尝试删除该表,然后让Sequelize重新创建该表。很抱歉更改了项目优先级,但我将在本周末与您联系。这正是我的目的,但仍不知道omitNull
。请在模型定义的相应列中使用autoIncrement:true
,并且在执行