Kla*_*axx 3 javascript observable typescript es6-promise nestjs
我有一个带有控制器和服务的 Nestjs 休息服务器。
在我的控制器中,当有人发出 get 请求时,有 get 函数:
@Get()
getAllFoos() {
return this.fooService.getAllFoos();
}
Run Code Online (Sandbox Code Playgroud)
在我的服务中,有一个从数据库获取文档的功能
async getAllFoos(): Promise<foos[]> {
try {
return await this.fooModel.find().exec();
} catch(e) {
return e;
}
Run Code Online (Sandbox Code Playgroud)
这有效!我现在需要更改它以使其与可观察量一起使用。我将控制器更改为:
@Get()
getAllFoos() {
this.fooService.getAllFoos().subscribe(
response => {
console.log(response);
},
error => {
console.log(error);
},
() => {
console.log('completed');
});
}
Run Code Online (Sandbox Code Playgroud)
以及对此的服务:
getAllFoos(): Observable<foos[]> {
try {
this.fooModel.find().exec();
} catch(e) {
return e;
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
[Nest] 7120 - 2019-2-20 15:29:51 [ExceptionsHandler] Cannot read property 'subscribe' of undefined +4126ms
Run Code Online (Sandbox Code Playgroud)
错误来自
this.fooService.getAllFoos().subscribe(
Run Code Online (Sandbox Code Playgroud)
这条线来自控制器。我真的不知道要改变什么才能让它现在起作用。
任何帮助或想法表示赞赏!
Promise 不能被转换为 Observable。使用方法创建可观察对象Observable.from()(文档)。
getAllFoos(): Observable<foos[]> {
return Observable.from(this.fooModel.find().exec());
}
Run Code Online (Sandbox Code Playgroud)
rxjs 版本 < 6:
getAllFoos(): Observable<foos[]> {
return Observable.fromPromise(this.fooModel.find().exec());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1940 次 |
| 最近记录: |