#javascript #typescript #seeding #migrating
#javascript #машинописный текст #заполнение #миграция
Вопрос:
Я пытаюсь ввести некоторые данные в базу данных. Начальный файл написан на Typescript, затем скомпилирован в Javascript для запуска knex. Когда я пытаюсь запустить начальный файл, я получаю ошибку, указанную в заголовке.
Error: Invalid seed file: seed.js must have a seed function
Сама ошибка предполагает, что в коде нет начальной функции, я попытался изменить сам файл JS вместо компиляции файла TS, а также перепробовал множество способов возврата соединения.
Это файл TS, который я написал для компиляции (seed.ts);
const {
patientData, gpData, ailmentData, surgeryData,
} = require('../data/index.js');
const seed = (knex: any, Promise: any) => knex.migrate
.rollback()
.then(() => knex.migrate.latest())
.then(() => {
const surgeries = knex('surgeries')
.insert(surgeryData)
const patients = knex('patients').insert(patientData).returning('*');
const gps = knex('gps').insert(gpData).returning('*')
return Promise.all([surgeries,patients, gps])
})
.then(([patients, gps]) => {
console.log(patients, '<-- patients')
console.log(gps, '<-- GPs')
// const ailments = knex('ailments').insert
// (ailmentData).returning('*')
return knex('surgeries', 'gps', 'patients')
.returning('*')
})
Это результат компиляции (seed.js );
var _a = require('../data/index.js'), patientData = _a.patientData, gpData = _a.gpData, ailmentData = _a.ailmentData, surgeryData = _a.surgeryData;
var seed = function (knex, Promise) { return knex.migrate
.rollback()
.then(function () { return knex.migrate.latest(); })
.then(function () {
var surgeries = knex('surgeries')
.insert(surgeryData);
var patients = knex('patients').insert(patientData).returning('*');
var gps = knex('gps').insert(gpData).returning('*');
return Promise.all([surgeries, patients, gps]);
})
.then(function (_a) {
var patients = _a[0], gps = _a[1];
console.log(patients, '<-- patients');
console.log(gps, '<-- GPs');
// const ailments = knex('ailments').insert
// (ailmentData).returning('*')
return knex('surgeries', 'gps', 'patients')
.returning('*');
}); };
Ответ №1:
Мне нужно было изменить const
из моего TS-файла на exports
следующим образом.
const {
patientData, gpData, ailmentData, surgeryData,
} = require('../data/index.js');
exports.seed = (knex: any, Promise: any) => knex.migrate
.rollback()
.then(() => knex.migrate.latest())
.then(() => {
const surgeries = knex('surgeries')
.insert(surgeryData)
const patients = knex('patients').insert(patientData).returning('*');
const gps = knex('gps').insert(gpData).returning('*')
return Promise.all([surgeries,patients, gps])
})
.then(([patients, gps]) => {
console.log(patients, '<-- patients')
console.log(gps, '<-- GPs')
// const ailments = knex('ailments').insert
// (ailmentData).returning('*')
return knex('surgeries', 'gps', 'patients')
.returning('*')
})