Необработанное отклонение TypeError: имя зависимости должно быть задано в виде не пустой строки



Я получил эту ошибку, когда коды попали в require('./models').sequelize.sync(). (models - это каталог, созданный командой sequelize init) Может ли кто-нибудь дать мне некоторые подсказки о том, что вызывает эту ошибку?



> node src/server.js

Unhandled rejection TypeError: Dependency name must be given as a not empty string
at /Users/syg/Repos/example/node_modules/sequelize/node_modules/toposort-class/toposort.js:37:31
at Array.forEach (native)
at Toposort.self.add (/Users/syg/Repos/example/node_modules/sequelize/node_modules/toposort-class/toposort.js:35:22)
at /Users/syg/Repos/example/node_modules/sequelize/lib/model-manager.js:89:12
at Array.forEach (native)
at ModelManager.forEachModel (/Users/syg/Repos/example/node_modules/sequelize/lib/model-manager.js:58:15)
at /Users/syg/Repos/example/node_modules/sequelize/lib/sequelize.js:862:23
at tryCatcher (/Users/syg/Repos/example/node_modules/sequelize/node_modules/bluebird/js/main/util.js:24:31)
at Promise._settlePromiseFromHandler (/Users/syg/Repos/example/node_modules/sequelize/node_modules/bluebird/js/main/promise.js:454:31)
at Promise._settlePromiseAt (/Users/syg/Repos/example/node_modules/sequelize/node_modules/bluebird/js/main/promise.js:530:18)
at Promise._settlePromiseAtPostResolution (/Users/syg/Repos/example/node_modules/sequelize/node_modules/bluebird/js/main/promise.js:224:10)
at Async._drainQueue (/Users/syg/Repos/example/node_modules/sequelize/node_modules/bluebird/js/main/async.js:182:12)
at Async._drainQueues (/Users/syg/Repos/example/node_modules/sequelize/node_modules/bluebird/js/main/async.js:187:10)
at Immediate.Async.drainQueues [as _onImmediate] (/Users/syg/Repos/example/node_modules/sequelize/node_modules/bluebird/js/main/async.js:15:14)
at processImmediate [as _immediateCallback] (timers.js:358:17)


Я использую [email protected] с HapiJS. Аналогичное РЕПО можно найти здесь. (Это РЕПО действительно работает, даже с sequelize обновленной до последней версии)

416   2  

2 ответов:

Это вызвано неправильной формой ключа самосоответствия в одном из файлов моей модели.

Это было связано с объявлением внешнего ключа в соответствии с предыдущей версией sequelize.

Согласно последней версии "sequelize": "^4.31.2", правильный способ добавить внешний ключ -

addressId: {
    type: DataTypes.INTEGER,
    references: {
        model: 'addresses',
        key: 'id'
    }
}

Я объявлял его как

addressId: {
    type: DataTypes.INTEGER,
    references: 'addresses',
    referencesKey: 'id'
}

Comments

    Ничего не найдено.