我有一列kid_ages是Integer[]. 迁移时,我收到以下错误:
DataTypeNotSupportedError: Data type "Array" in "home.kid_ages" is not supported by "postgres" database.
我尝试将以下选项添加到我的专栏中:
type: 'array'
Run Code Online (Sandbox Code Playgroud)
和:
array: true,
default: [],
nullable: false,`
@Column({
array: true,
default: [],
nullable: false,
})
kid_ages: string;`
Run Code Online (Sandbox Code Playgroud) 当我开始使用 Angular 时,我工作场所的某人告诉我在使用RxJs中的可观察量take(1)执行 API 调用时使用,声称它会在一次 API 调用后自动取消订阅。
所以我相信这个说法,并继续使用它,直到我发现组件加载时有大量渲染延迟,尤其是在页面之间导航时。
让我们看一下我的例子:
这是UserRepository与 API 对话以向应用程序授予权限的:
@Injectable({
providedIn: 'root'
})
export class UserRepository {
private apiUrl: string = environment.apiUrl;
constructor(private readonly httpRequestService: HttpRequestService) {
super();
}
@UnsubscribeOnDestroy()
getPermissions() {
return this.httpRequestService.get(`${this.apiUrl}/user/permissions`).pipe(map((res: any) => res.user));
}
}
Run Code Online (Sandbox Code Playgroud)
以及用法:
userRepository.getPermissions().pipe(take(1)).subscribe(data => ...);
Run Code Online (Sandbox Code Playgroud)
我在谷歌上搜索了一下,发现它take(1)不会自动取消订阅,而且根本不是目的,它所做的只是从管道中获取一个可观察值并忽略其余部分。
takeUntil一起使用来触发取消订阅unsubscriptionSubjectunsubscriptionSubject.nextngOnDestroyBaseRepository使用 的字典创建一个methodName => Subject,因此对于每个 API 调用,我可以保存它自己的主题,并创建一个装饰器,该装饰器会自动取消订阅先前的 API 调用,并确保不会有超过一个类型的订阅API 调用的。基础存储库 …
typescript ×2
angular ×1
javascript ×1
memory-leaks ×1
node.js ×1
postgresql ×1
rxjs ×1
typeorm ×1