テストデータベースにデータを入力するための初期移行を作成しようとしていますが、動作しません。これは私が移行に持っているものです:
_'use strict';
module.exports = {
up: function (queryInterface, Sequelize) {
return [
queryInterface.bulkInsert('Users', [
{ username: "user1" },
{ username: "user2" }
])];
},
down: function (queryInterface, Sequelize) {
return queryInterface.dropTable('Users');
}
};
_
そして、私はこのエラーを受け取ります:
_== 20151024144833-create-conjugation: migrating =======
{ [SequelizeUniqueConstraintError: Validation error]
name: 'SequelizeUniqueConstraintError',
message: 'Validation error',
errors: [],
fields: [] }
_
これを行う簡単な方法が必要です。他のSOの質問を確認しましたが、sequelizeの現在のバージョンでは構文が変更されています。
[〜#〜] update [〜#〜]
わかりました、私は自分の間違いに気付きました:私は、sequelizeがタイムスタンプを処理すると仮定していました。これにより問題が修正されます。
_up: function (queryInterface, Sequelize) {
console.log(User);
return [
queryInterface.bulkInsert('Users', [
{ username: "user1", createdAt: Date.now(), updatedAt: Date.now() },
{ username: "user2", createdAt: Date.now(), updatedAt: Date.now() }
])
];
}
_
しかし、これが私のデータベースをシードする正しい方法であるかどうかはまだ疑問です。 User.create({})
を使用してそれを行う方法はありますか?
別の方法として、 sequelize Fixtures を使用することもできます。デフォルトのデータをjsonファイルまたはその他の形式として宣言して、テーブルを初期化できます。
次を使用できます:
const City = sequelize.define('city', {
name: { type: Sequelize.STRING },
order_: { type: Sequelize.INTEGER }
});
City.sync().then(() => {
City.create({
name: 'Neuquen',
order_: 0
});
City.create({
name: 'General Roca',
order_: 1
});
});
または、「移行」について http://docs.sequelizejs.com/en/latest/docs/migrations/ をご覧ください。
new Date()
mysqlにも必要です、つまり.
return queryInterface.bulkInsert('users', [
{
"Forename":"A",
"Surname": "User",
"UserType":"1",
"Email":"[email protected]",
"Password":"password",
"LastLogin":0,
"Tokens": JSON.stringify({"tokens":[]}),
"CreatedBy": 999,
"CreatedAt": new Date(),
"UpdatedAt": new Date()
}]);