10

私は自分のプロジェクトの種を書き込もうとしてきましたが、ちょっとした障害に遭遇しました。

私は私のとテーブルとのmany-to-many関係を持っています。したがって、データベースをシードするときは、正しい ID を持つレコードを結合テーブルに追加する必要があります。そのためには、ユーザーとロールを見つけて取得する必要があり、それが問題です。続編サイトで適切なドキュメントが見つかりません。シーディングと移行には、 sequelize-cliを使用しています。パラメータとして a を取得しますが、例が見つからないか、このことが実際に何ができるかについて言及していません。いくつかの簡単な例だけで、(どういうわけか) 移行が完了し、Google で見つけたものを知ることができました。usersrolesemailnameidsqueryInterface

私が言う「汚いトリック」を使用してこれを解決しました...

// user_seeds.js
up: function (queryInterface, Sequelize) {
  return queryInterface.bulkInsert(table, [{
    id: 1,
    name: 'John doe',
    email: 'john@doe.com',
    created_at,
    updated_at
}], {});

// roles_seeds.js
up: function (queryInterface, Sequelize) {
  return queryInterface.bulkInsert(table, [{
    id: 1,
    name: 'admin',
    created_at,
    updated_at
  }, {
    id: 2,
    name: 'user',
    created_at,
    updated_at
}]);

//user_roles_seeds.js
up: function (queryInterface, Sequelize) {
    return queryInterface.bulkInsert(table, [{
    employee_id: 1,
    role_id: 1
  }]);
},

シードをもう一度実行して、これがどのように機能するかを忘れたい場合、将来面倒になる可能性があるため、このソリューションは好きではありません。this を使用してデータベースにクエリを実行する方法があるはずqueryInterfaceです。あなたの 1 人がこの問題に遭遇して解決したかどうか疑問に思っていました。もしそうなら、共有してください。

4

3 に答える 3

4

これは、この問題を解決するためのベスト プラクティスではないかもしれませんが、これ以上のものを見つけることができず、十分満足できるものでした。

基本的に、必要なテーブルの実際のモデルが必要であり、通常の Sequelize API を使用してレコードを検索しました。

基本的には殴るだけ

const { User } = require('./models');

up: function (queryInterface, Sequelize) {
  return User.findOrCreate({
    where: { email: 'john@doe.com' },
    defaults: {
      name: 'John Doe'
    }
  });

などなど。これが誰かに役立つことを願っています。誰かがこれを行うより良い方法を持っている場合は、共有してください。

于 2016-12-18T18:41:04.113 に答える