Sequelize seeder:意外的标识符错误,没有堆栈跟踪进一步解释它
2019-07-25
3035
我在使用 Sequelize 时遇到了一个问题,运行带有 autoIncrement 键的 Postgres 的
sequelize:seed
时,无法向该表添加新项目。Sequelize 不会自动将模型与表中的最新 ID 同步,因此在添加种子数据后,我收到了重复键错误。
我试图用我在这里找到的一些建议来修复它,关于在种子文件运行后重新同步序列,但我收到了
Unexpected Identifier
错误,没有进一步的解释。
这是我的代码 - 谁能告诉我哪里出了问题?我的 linter 没有抛出任何错误,所以我不 认为 这是一个标准语法错误:
'use strict';
const db = require('../models');
module.exports = {
up: async (queryInterface, Sequelize) => {
/*
Add altering commands here.
Return a promise to correctly handle asynchronicity.
Example:
return queryInterface.bulkInsert('People', [{
name: 'John Doe',
isBetaMember: false
}], {});
*/
return await queryInterface
.bulkInsert('user_podcasts', [
{
id: 1,
userId: 1,
podcastId: '88b15eefe35d42c58bca9c5e17080661',
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString()
},
{
id: 2,
userId: 1,
podcastId: '7f519d33692246a98688a1415c3c591c',
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString()
},
{
id: 3,
userId: 2,
podcastId: '7f519d33692246a98688a1415c3c591c',
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString()
},
{
id: 4,
userId: 2,
podcastId: 'd9604d45a8494577bec068df875fb69d',
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString()
}
])
.then(async () =>
db.query(
`ALTER SEQUENCE "${
model.user_podcasts
}_id_seq" RESTART WITH ${(await model.count()) + 1}`
)
)
.catch(error => {
if (error.message.indexOf('already exists') > -1) return;
console.log(error);
});
},
down: (queryInterface, Sequelize) => {
/*
Add reverting commands here.
Return a promise to correctly handle asynchronicity.
Example:
return queryInterface.bulkDelete('People', null, {});
*/
}
};
1个回答
使用此命令 获取错误堆栈跟踪 。请注意 --debug 选项。
sequelize-cli db:migrate --debug
如果您尚未安装 sequelize-cli,请使用以下命令进行安装。
npm install sequelize-cli
如果您愿意,可以使用 -g 选项进行全局安装。
mohammed_ayaz
2020-01-13