Я использую Sequelize для управления базой данных Postgres SQL в проекте node.js.Я сталкиваюсь с ошибками пространства имен, но не могу понять, почему.
Код, который работает:
// db variable holds initialized database connection
const link = name => ( {
through: db.define( name, {
amount: Sequelize.FLOAT,
unit: Sequelize.STRING,
dataSource: Sequelize.STRING
} ),
as: name + 's'
} )
// All model variables (Material, Component etc) have model names
// identical to their variable names (bit without capitals)
Material.belongsToMany( Material, link( 'materialchildmaterial' ) )
Component.belongsToMany( Component, link( 'componentchildcomponent' ) )
Input.belongsToMany( Input, link( 'inputchildinput' ) )
Component.belongsToMany( Component, link( 'componentchilddependency' ) )
В тот момент, когда я добавляю следующие вещи, ломаются:
Input.belongsToMany( Component, link( 'componentchildinput' ) )
Ошибка:
{ name: 'SequelizeDatabaseError',
parent:
{ name: 'error',
length: 177,
severity: 'ERROR',
code: '42712',
file: 'parse_relation.c',
line: '420',
routine: 'checkNameSpaceConflicts' },
original:
{ name: 'error',
length: 177,
severity: 'ERROR',
code: '42712',
file: 'parse_relation.c',
line: '420',
routine: 'checkNameSpaceConflicts' } }
Из postgres docs код 42712 расшифровывается как 'DUPLICATE ALIAS'.
Моя путаница: яиспользуя уникальные имена для всего (afaik).Когда я изменяю имя ссылки Input <-> Component на 'randomthing', ошибка не появляется.
Я застрял в этом на хороший день сейчас.Любые подсказки приветствуются.