0
データベース全体をリセットし、すべてをシードするコードを設定したいと思います。Node.jsを使用してSequelizeのスケーラブルなシーディングを行いますか?
いくつかの外部キー制約では、シードは順番に発生する必要がありますが、依存しないシードは同時に非同期に発生する必要があります。
これらのシードを別々のファイルで適切に定義するにはどうすればよいですか?
データベース全体をリセットし、すべてをシードするコードを設定したいと思います。Node.jsを使用してSequelizeのスケーラブルなシーディングを行いますか?
いくつかの外部キー制約では、シードは順番に発生する必要がありますが、依存しないシードは同時に非同期に発生する必要があります。
これらのシードを別々のファイルで適切に定義するにはどうすればよいですか?
module.exports
で約束をエクスポートすると問題が発生します。
プロミスを直接返すファイルが必要なときに、プロミスがすぐに呼び出されました。
プロミスを返す関数を返すことで問題を解決しました。
Resetting DB and seeding
const Seed = require('../seeds/index');
sequelize.sync({ force: true }).then(() => {
return Seed();
}).then(() => {
// DB reset
}).catch(err => {
// Error in one of the seeds, specific error in 'err'
});
seeds/index.js
- 他のファイル中の種
const UserSeed = require('./user');
const BComponentSeed = require('./bcomponent');
const MaterialSeed = require('./material');
module.exports = function() {
return Promise.all([ // Returning and thus passing a Promise here
// Independent seeds first
UserSeed(),
BComponentSeed(),
MaterialSeed(),
]).then(() => {
// More seeds that require IDs from the seeds above
}).then(() => {
console.log('********** Successfully seeded db **********');
});
}
seeds/user.js
を呼び出す - ユーザーの例を見ますthis GitHub issue
const User = require('../models/user');
const crypto = require('../globs/crypto');
module.exports = function() {
return User.bulkCreate([ // Returning and thus passing a Promise here
{
email: '[email protected]',
password: crypto.generateHash('john'),
},
{
email: '[email protected]',
password: crypto.generateHash('a'),
},
]);
};
はこの思い付きました