Есть ли способ получить атрибуты//ассоциаций с помощью ранее определенной Sequelize Model?

Мне нужно получить некоторые данные с помощью ранее определенной Sequelize Model.

Что мне нужно:

* attributes list
 * attribute name
 * attribute type (INTEGER, STRING,...)
 * was it generated by association method?
* list of associations
 * association type (belongsTo, hasMany, ...)

По какой-то причине довольно сложно проверить Sequelize модели в консоли:

> db.sequelize.models.Payment
Payment // <- it valid Sequelize Model {Object}, however its not inspectable
> db.sequelize.models.Payment.attributes
...
type:
 { type: { values: [Object] },
 values: [ 'cash', 'account', 'transfer' ],
 Model: Payment,
 fieldName: 'type',
 _modelAttribute: true,
 field: 'type' },
sum: 
 { type: 
 { options: [Object],
 _length: undefined,
 _zerofill: undefined,
 _decimals: undefined,
 _precision: undefined,
 _scale: undefined,
 _unsigned: undefined },
 Model: Payment,
 fieldName: 'sum',
 _modelAttribute: true,
 field: 'sum' },
 ...

Как вы видите, фактическая информация о типах полей отсутствует. То же самое происходит с ассоциациями.

Итак, есть ли какой-либо надежный "официальный" способ извлечь эти данные из класса Model без копания и реверсирования объекта?

1 ответ

Попробуйте Payment.rawAttributes, который является объектом с именем свойства как ключом и объектом с данными о свойствах. property.type.key - это строка с типом.

Payment.associations - объект ассоциаций - ключ - это имя, и каждая ассоциация будет иметь свойство associationType - вы также можете сделать association instanceof sequelize.Association.BelongsTo и т.д.

licensed under cc by-sa 3.0 with attribution.