【发布时间】:2017-09-18 12:38:12
【问题描述】:
我正在尝试定义相关模型,例如@types/loopback definitions 中的HasMany 关系
我已经为 HasMany 定义了一个接口,因为它已实现:
interface IHasMany {
/**
* Create a target model instance
* @param {Object} targetModelData The target model data
* @param {Function} callback The callback function
*/
// HasMany.prototype.create = function(targetModelData, options, cb)
create<T = any>(targetModelData: any, callback?: (err: Error, instance: T) => void): Promise<T> | void;
(snip ... other functions findById, exists, updateById, destroyById omitted for bevity)
角色模型具有以下内置关系(在 loopback 模块中定义):
"relations": {
"principals": {
"type": "hasMany",
"model": "RoleMapping",
"foreignKey": "roleId"
}
}
在 Typescript 中,这个函数的用法如下:
await createdRole.principals.create({
principalType: loopback.RoleMapping.USER,
principalId: createdUser.id
});
(注意:loopback.RoleMapping.USER 是即将提交给 DT 的 PR 中的常量)
所以现在,我需要将此接口附加到 Role 模型,并让它引用 RoleMapping 模型。
class Role extends PersistedModel {
static OWNER: string;
static RELATED: string;
static AUTHENTICATED: string;
static UNAUTHENTICATED: string;
static EVERYONE: string;
/** HasMany RoleMappings */
static async principals = ????
对后续步骤有任何指导吗?似乎我需要将 IHasMany 扩展为特定于角色映射(例如 IHaveManyRoleMappings)——可能使用this post,然后让主体类似于:
static async principals = class RoleMappings implements IHasManyRoleMappings {};
【问题讨论】:
标签: typescript loopbackjs typescript-typings