Я пытаюсь настроить сеялку для моих моделей 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, {})
);
}
};
Ожидается: успешное заполнение базы данных
Факт: «ОШИБКА: Неожиданный идентификатор»