1. ホーム
  2. node.js

[解決済み] NodeJsのSequelizeでautoIncrementはどのように動作するのですか?

2022-02-01 20:17:29

質問

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

しかし、そのコードを実行すると、データベースエラーが発生します。

列のNULL値 "id"は、NULLでない制約に違反しています。

Sequelizeが整数を入れてくれるか、データベーステーブルを定義してくれると思っていたのですが。 どうやら違うようです。 IDが自動的に増加し、入力されるようにするために、私は何を見逃しているのでしょうか?

ありがとうございました。

解決方法は?

通常、Sequelize.jsはデータベースと自己適合します。そのため、autoincrement属性はPostgreSQLのserial型に対応する。

私はすでにSequelizeを使っていましたが、覚えているのは、主キーにidを指定する必要がないことです。Sequelizeがそれをやってくれるのです。

id属性を追加しないようにして、Sequelizeがそれを追加しないかどうかを確認します。