У меня есть модель с именем user
, модель с именем access_barrier
и таблица соединений между user
и access_barrier
с именем barrier_users
.
. Я создал для них следующие ассоциации
user.belongsToMany(models.access_barrier, {
as: "access_barriers_accessible",
through: "barrier_users",
foreignKey: "userId",
onUpdate: "CASCADE",
onDelete: "CASCADE"
});
access_barrier.belongsToMany(models.user, {
as: "users_with_permission",
through: "barrier_users",
foreignKey: "barrierId",
onUpdate: "CASCADE",
onDelete: "CASCADE"
});
При запросе пользователей с помощью следующего кода я вижу, что все данные в порядке.
return models.user
.findAll({
include: [
{
model: models.access_barrier,
as: "access_barriers_accessible"
}
]
})
.then(function(result) {
resolve(result);
})
.catch(models.Sequelize.DatabaseError, function() {
reject("An error occurred in the database");
})
.catch(function(err) {
reject(err);
});
В документации по сиквелизу упоминается, что методы доступа создаются при использовании вышеуказанных функций.как упомянуто ниже
Project.belongsToMany(User, {through: 'UserProject'});
User.belongsToMany(Project, {through: 'UserProject'});
Это создаст новую модель с именем UserProject с эквивалентными внешними ключами projectId и userId.Независимо от того, являются ли атрибуты верблюжьим или нет, зависит от двух моделей, объединенных в таблицу (в данном случае - «Пользователь» и «Проект»).Sequelize ранее пытался автоматически генерировать имена, но это не всегда приводило бы к наиболее логичным установкам.
Это добавит методы getUsers, setUsers, addUser, addUsers в Project и getProjects, setProjects, addProject и addProjects для пользователя..
Как узнать имена методов, добавленные для моих моделей, где именно я могу их просмотреть?Как мне получить к ним доступ?
Я использовал Object.keys(models.user)
и получил данные ниже
[ 'sequelize',
'options',
'associations',
'underscored',
'tableName',
'_schema',
'_schemaDelimiter',
'rawAttributes',
'primaryKeys',
'_timestampAttributes',
'_readOnlyAttributes',
'_hasReadOnlyAttributes',
'_isReadOnlyAttribute',
'_dataTypeChanges',
'_dataTypeSanitizers',
'_booleanAttributes',
'_dateAttributes',
'_hstoreAttributes',
'_rangeAttributes',
'_jsonAttributes',
'_geometryAttributes',
'_virtualAttributes',
'_defaultValues',
'fieldRawAttributesMap',
'fieldAttributeMap',
'uniqueKeys',
'_hasBooleanAttributes',
'_isBooleanAttribute',
'_hasDateAttributes',
'_isDateAttribute',
'_hasHstoreAttributes',
'_isHstoreAttribute',
'_hasRangeAttributes',
'_isRangeAttribute',
'_hasJsonAttributes',
'_isJsonAttribute',
'_hasVirtualAttributes',
'_isVirtualAttribute',
'_hasGeometryAttributes',
'_isGeometryAttribute',
'_hasDefaultValues',
'attributes',
'tableAttributes',
'primaryKeyAttributes',
'primaryKeyAttribute',
'primaryKeyField',
'_hasPrimaryKeys',
'_isPrimaryKey',
'autoIncrementAttribute',
'_scope',
'_scopeNames',
'associate' ]
При проверке, что associations
имеет
{ access_barriers_incharge: access_barriers_incharge,
access_barriers_admin: access_barriers_admin,
admin: admin,
access_barriers_accessible: access_barriers_accessible,
barriers_accessed: barriers_accessed }