Создание модели или массовое создание обещания в начальном файле - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть цепочка обещаний для добавления данных.Если я использую его «нормально» в файле JavaScript, я начинаю с Node.js или называю его по-другому, это работает (более или менее - другой вопрос).

Но если я хочу использовать его вфайл sequelize seed с помощью sequelize-cli (sequelize db: seed: all), обещания не будут работать.Хорошо, есть ошибка, которая встречается в цепочке .catch, но .then не будет работать ...

Поля обещаний не определены ...

Я знаю, что яМожно использовать bulkInsert, но почему я использую ORM, если мне «приходится» использовать сырой SQL, особенно если у меня есть ссылки между таблицами, которые указывают на uuid?

Я определил модели, имел «нормальный»перенести файл и получить «начальные» данные с начального числа.Нужно ли что-то отдельное, чтобы использовать обещания create / bulkCreate?

Я что-то упустил в документации?

1 Ответ

0 голосов
/ 01 октября 2018

Я нашел это сам со многими попытками и ответом на этот вопрос: Последовательное динамическое заполнение

связи, которые необходимо было исправить в моделях:

User.associate = function(models) {
  User.belongsToMany(
    models.Role, {
      through: 'user_role',
    }
  );
};

и

Role.associate = function(models) {
  Role.belongsToMany(
    models.User, {
      through: 'user_role',
    }
  );
};

и таблице m: n требовалось это:

....
.then(() => {
  queryInterface.createTable('user_role', {
    userUuid: {
      type: Sequelize.UUIDV4,
      references: {
        model: 'User',
        key: 'uuid',
      },
      allowNull: false,
    },
    roleUuid: {
      type: Sequelize.UUIDV4,
      references: {
        model: 'Role',
        key: 'uuid',
      },
      allowNull: false,
    },
    createdAt: { allowNull: false, type: Sequelize.DATE },
    updatedAt: { allowNull: false, type: Sequelize.DATE },
  });
}).then(() => {
  return queryInterface.addConstraint(
    'user_role',
    ['userUuid', 'roleUuid'], {
      unique: true,
      type: 'primary key',
      name: 'userrole_pkey',
    }
  );
});

переименовал поля, чтобы они были похожи на сгенерированные из sequelize

...