【发布时间】:2020-05-25 22:57:01
【问题描述】:
我创建了一个服务并尝试调用 API 方法 (HTTP GET) 并将我的数据放在 Observable 中,我不明白为什么我没有看到来自 API GET 的所有数据(对象)。
angular-component.ts
public allUsers$: Observable<User[]>;
constructor(private usersService: UsersService) { }
ngOnInit() {
this.allUsers$ = this.getAllUsers();
console.log(this.allUsers$)
}
private getAllUsers(): Observable<User[]> {
return this.usersService.getUsers();
}
在控制台我有这个消息:
users.service.ts
public getUsers(): Observable<User[]> {
return this.apiService.get(this.type) as Observable<User[]>;
}
api.service.ts
public get(url: string): Observable<any> {
return this.http.get(environment.apiUrl + `/${url}`);
}
nodejs-route.js
app.get("/", async (req, res) => {
const getAllUsers = await User.find().populate("orders.order_id");
res.status(200).send(getAllUsers);
});
【问题讨论】:
-
您需要订阅才能从 Observable 中获取值,或者在通话结束时使用 .toPromise()
-
我建议通过angular.io/guide/http 运行,这解释了这一点。
-
如果我将 subscribe 放在 getUsers() 上,我有一个错误,例如:Type 'Subscription' is missing the following properties from type 'Observable
': _isScalar, source, operator, lift ,还有 6 个。 -
你的 http 字段是什么类型的?在 api.service.ts
-
类型字段是一个对象
标签: json angular typescript rxjs