sequelize index example define create node.js postgresql-9.1 auto-increment sequelize.js

node.js - index - ¿Cómo funciona autoIncrement en NodeJs''s Sequelize?



sequelize model (3)

Me funcionó si agregué manualmente el campo "id" (en este caso, Sequelize no lo agregará automáticamente) en el modelo como este:

Visitor = sequelize.define(''visitor'', { id: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true }, email: Sequelize.STRING })

el comando SQL resultante es: "CREAR TABLA SI NO EXISTE" visitante "(" id "SERIAL," email "varchar (255) ..."

El documento de Sequelize no dice mucho sobre autoIncrement . Solo incluye el siguiente ejemplo:

// autoIncrement can be used to create auto_incrementing integer columns incrementMe: { type: Sequelize.INTEGER, autoIncrement: true }

Basado en este ejemplo, tengo el siguiente código:

db.define(''Entries'', { id: { type: Seq.INTEGER, autoIncrement: true, primaryKey: true }, title: { type: Seq.STRING, allowNull: false }, entry: { type: Seq.TEXT, allowNull: false } }

Ahora, cuando quiero crear una entrada, quiero hacer algo como esto:

models.Entry.create({title:''first entry'', entry:''yada yada yada''})

Sin embargo, cuando ejecuto ese código obtengo un error de base de datos:

El valor nulo en la columna "id" viola la restricción no nula

Asumiría que Sequelize pondría el número entero por mí o definiría la tabla de la base de datos para hacerlo por sí misma. ¿Aparentemente no? ¿Qué me estoy perdiendo aquí para garantizar que la identificación se incremente y se llene automáticamente?

Muchas gracias.


normalmente Sequelize.js se adapta con el databse. Por lo tanto, el atributo de autoincremento corresponde a un tipo de serie en PostgreSQL.

Ya trabajé con Sequelize y lo que recuerdo es que no es necesario especificar un ID como clave principal. Sequelize lo hará por ti.

Trate de no agregar un atributo de identificación y ver si Sequelize no lo agregará por usted o no.


omitNull opción omitNull config de forma predeterminada es falsa. Establézcalo en verdadero, y Postgres se encargará de la 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: ''[email protected]''})