gpt4 book ai didi

Angular Typescript 从数据库加载对象

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:22:27 24 4
gpt4 key购买 nike

我在后端实现了一个 REST 接口(interface),它与我的前端节点 Angular 服务器通信以从我的 MongoDB 加载数据。在全局类级别,我定义了一个数组,其中包含我从数据库到数据库的所有项目:

protected projects: Array<Project> = [];

在我的 OnInit 方法中,我试图将所有项目推送到数组中以供使用:

for(let i=0; i <this.user.projects.length; i++) {
this.databaseService.getDocument('Projects', this.user.projects[i])
.subscribe((project: Project) => {
this.projects.push(project);
});
}

databaseService 方法如下所示:

getDocument(collection: string, documentIdentifier: string): any {
return this.http.get(`${newLink}${collection}/${documentIdentifier}`)
.pipe(map((res: Response) => res));
}

现在,当我稍后在 OnInit 中尝试访问项目数组的元素时,出现未定义/空错误:

console.log('Projects' , this.projects[0]);

虽然项目数组应该填对了。会不会是报错中的元素没有加载完全?因为当我同时记录整个数组时,它会打印到控制台并显示消息:Value below was evaluated just now。有人看到我做错了什么吗?提前致谢。

最佳答案

您正在进行异步调用,并且您可能正在异步 block 之外打印日志。您可以尝试打印同步块(synchronized block)内的值 -

for(let i=0; i <this.user.projects.length; i++) {
this.databaseService.getDocument('Projects', this.user.projects[i])
.subscribe((project: Project) => {
this.projects.push(project);
console.log("Project Added", project); //<-- This line is added
});
}

关于Angular Typescript 从数据库加载对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52702328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com