#javascript #node.js #express #sequelize.js
Вопрос:
Я думал, что подобная ошибка должна была быть связана с несоответствием типа поля(типа данных). но это оказалось ложным, так как я попытался изменить типы данных в идентификаторе таблицы и внешнем ключе на integer и uuid, но все равно результат тот же. Я хотел бы также отметить, что я совершенно новичок в nodejs, так что вы знаете, откуда я…
migration/xxxxxxx-demo-user.js
'use strict';
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable('Users', {
id: {
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4,
allowNull: false,
primaryKey: true
},
firstName: {
type: Sequelize.STRING
},
lastName: {
type: Sequelize.STRING
},
email: {
type: Sequelize.STRING
},
phoneNumber: {
type: Sequelize.STRING
},
country: {
type: Sequelize.STRING
},
PlanId: {
type: Sequelize.UUID,
references: {
model: 'Plans',
key: 'id'
},
onUpdate: 'CASCADE',
onDelete: 'SET NULL',
},
password: {
type: Sequelize.STRING
},
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE
}
});
},
down: async (queryInterface, Sequelize) => {
await queryInterface.dropTable('Users');
}
};
migrations/xxxxxx-demo-plan.js
'use strict';
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable('Plans', {
id: {
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4,
allowNull: false,
primaryKey: true
},
title: {
type: Sequelize.STRING
},
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE
}
});
},
down: async (queryInterface, Sequelize) => {
await queryInterface.dropTable('Plans');
}
};
сообщение об ошибке
Комментарии:
1. В чем заключается сообщение об ошибке?
Ответ №1:
Попробуйте переименовать свой «xxxxxxx-demo-user.js» и «xxxxxxx-demo-plan.js» имена файлов миграции. Как и в первый раз, вы запускали миграцию пользователей перед миграцией плана, поэтому ваше поле «планИд» (таблицы пользователей) указывает на несуществующую таблицу планов. Попробуйте что-нибудь подобное и снова запустите миграцию:
20210918101111-demo-plan.js
20210918102222-demo-user.js
sequelize db:migrate:undo:all
sequelize db:migrate
Комментарии:
1. идеально, другими словами, я должен был создать xxx-plan.js миграция до xxx-user.js. сработало идеально. Спасибо