これ見る
なにこれ: sequelize deprecated String based operators are now deprecated. Please use Symbol based operators for better security, read more at http://docs.sequelizejs.com/manual/tutorial/querying.html#operators
Sequelize クラスの引数の4つ目に { operatorsAliases: Op }
を追加する。
import Sequelize from "sequelize";
const config = {
database: "toto",
username: "postgres",
password: "postgres"
};
const Op = Sequelize.Op;
const sequelize = new Sequelize(
config.database,
config.username,
config.password,
{
dialect: "postgres",
operatorsAliases: Op,
}
);
Deprecation warning for String based operators · Issue #8417 · sequelize/sequelize sequelize/sequelize#8417 sequelize/sequelize#8417 (comment)
Sequelize.Model を継承して作ったモデルの init() 内の super.init() の第2引数を確認する。
# good
super.init({ ... }, { sequelize, ... });
# bad
super.init({ ... }, sequelize, ... );
import Sequelize, { Model } from 'sequelize';
export default class Videos extends Model {
static init(sequelize) {
return super.init({}, { sequelize });
}
}
前提として、クラスでモデルを定義するとクラス名でテーブルを検索する。
DBの lower_case_table_names
が0, 2
だと、小文字大文字を区別するので、テーブルがロワーケースの場合テーブルがヒットしない。
Classでモデルを定義すると明示的にテーブル名を指定する方法はないっぽい。
Model.define()
と同じく、Model.init()
の第2引数で{ freezeTableName: true, tableName: <TABLE NAME> }
とすることで明示的にテーブルを指定できる。
Tutorial | Sequelize | The node.js ORM for PostgreSQL, MySQL, SQLite and MSSQL
MySQL の lower_case_table_names について,テーブル名とデータベース名の中の大文字小文字について - その手の平は尻もつかめるさ