Sequelize CLI жалуется на «неожиданный идентификатор» при попытке запустить db: seed: all - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь настроить сеялку для моих моделей Sequelize.У меня есть одна ассоциация 1-много.Весь мой синтаксис кажется правильным и успешно проходит через мой линстер (полустандартный).

Всякий раз, когда я запускаю любую версию, используя sequelize db:seed:all, я получаю (крайне бесполезную) ошибку, которая состоит исключительно из сообщения "ОШИБКА: Неожиданный идентификатор "без имени файла, номера строки или любой трассировки стека.

Я пытался использовать async / await, а также обычные обещания.

Асинхронная / ожидающая версия моей сеялки (seedмассивы объектов сокращены):

'use strict';
const uuid = require('uuid/v4');
const bcrypt = require('bcrypt');
const models = require('../models');

module.exports = {
  up: async (queryInterface, Sequelize) => {
    const passwordHash = await bcrypt.hash('password', 10);

    await queryInterface.bulkInsert('Users', [
      {
        public_id: uuid(),
        name: 'Snoop',
        password_hash: passwordHash,
        admin: true,
        createdAt: new Date(),
        updatedAt: new Date()
      }
    ], {});

    const user = await models.User.findOne({
      where: { admin: true }
    });

    const result = await queryInterface.bulkInsert('Todos', [
      {
        text: 'Do a thing',
        complete: true,
        user_id: user.id,
        createdAt: new Date(),
        updatedAt: new Date()
      }
    ], {});

    return result;
  },

  down: async (queryInterface, Sequelize) => {
    await queryInterface.bulkDelete('Todos', null, {});
    await queryInterface.bulkDelete('Users', null, {});
  }
};

Версия с использованием обещаний:

'use strict';
const uuid = require('uuid/v4');
const bcrypt = require('bcrypt');
const { User } = require('../models');

function getSeedUsers (passwordHash) {
  return [
    {
      public_id: uuid(),
      name: 'Snoop',
      password_hash: passwordHash,
      admin: true,
      createdAt: new Date(),
      updatedAt: new Date()
    }
  ];
}

function getSeedTodos (userId) {
  return [
    {
      text: 'Do a thing',
      complete: true,
      user_id: userId,
      createdAt: new Date(),
      updatedAt: new Date()
    }
  ];
}

module.exports = {
  up: (queryInterface, Sequelize) => {
    return new Promise((resolve, reject) => {
      bcrypt.hash('password', 10)
        .then(passwordHash => {
          queryInterface.bulkInsert('Users', getSeedUsers(passwordHash), {})
            .then(() => {
              User.findOne({ where: { admin: true } })
                .then(user => {
                  queryInterface.bulkInsert('Todos', getSeedTodos(user.id), {})
                    .then(result => resolve(result))
                    .catch(err => reject(err));
                })
                .catch(err => reject(err));
            })
            .catch(err => reject(err));
        })
        .catch(err => reject(err));
    });
  },

  down: (queryInterface, Sequelize) => {
    return Promise.all(
      queryInterface.bulkDelete('Todos', null, {}),
      queryInterface.bulkDelete('Users', null, {})
    );
  }
};

Ожидается: успешное заполнение базы данных

Факт: «ОШИБКА: Неожиданный идентификатор»

...