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]''})