Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 自动增量如何在NodeJs';什么是续集?_Node.js_Postgresql 9.1_Auto Increment_Sequelize.js - Fatal编程技术网

Node.js 自动增量如何在NodeJs';什么是续集?

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

Sequelize的文档并没有对
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重新创建该表。

很抱歉更改了项目优先级,但我将在本周末与您联系。这正是我的目的,但仍不知道的目的是什么e> autoIncrement是指您每次都必须输入它。可能是我配置错误。问题是如何指定自定义primarykey名称!您可以执行defaultValue:invokeGenerateCustomId()在options@yacine我需要指定id字段,因为我将使用该字段作为外键引用另一个表,所以您可以告诉我一种方法吗?根据,不应再使用
omitNull
。请在模型定义的相应列中使用
autoIncrement:true
,并且在执行时不提供值de>create()@ThalisK::这对我不起作用。我和作者有同样的问题。@mxgrn,感谢它对我起作用,如果你不使用null值,postgresql将在语句中放入null值。@akohout你找到解决方案了吗?