我有一个名为 user
的模型和一个名为 access_barrier
的模型以及一个名为 barrier_users
的 user
和_2893395之间的连接表 .
我为他们创建了以下关联
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);
});
sequelize的文档提到了使用上述功能时创建的访问器方法,如下所述
Project.belongsToMany(User,{through:'UserProject'}); User.belongsToMany(Project,{through:'UserProject'});这将创建一个名为UserProject的新模型,其中包含等效的外键projectId和userId . 属性是否为camelcase取决于表连接的两个模型(在本例中为User和Project) . 需要定义 . Sequelize之前会尝试自动生成名称,但这并不总能导致最合理的设置 . 这将添加方法getUsers,setUsers,addUser,addUsers到Project,以及getProjects,setProjects,addProject和addProjects到User .
我如何知道为我的模型添加的方法名称,我在哪里可以查看它们?我如何访问它们?
我使用了 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 }
1 回答
找到这篇文章,让我弄清楚与续集对象有关的魔术方法 .
简而言之,您可以在sequelize对象上使用以下代码来获取其魔术方法 .
Feeling The Magic with Sequelize Magic Methods