我有一个带控制器和服务的Nestjs休息服务器。
在我的控制器中,当有人发出get请求时,有get函数:
@Get()
getAllFoos() {
return this.fooService.getAllFoos();
}
在我的服务中,有这个函数从数据库中获取文档
async getAllFoos(): Promise<foos[]> {
try {
return await this.fooModel.find().exec();
} catch(e) {
return e;
}
这有效!我现在需要更改它以使其与observable一起使用。我将控制器更改为:
@Get()
getAllFoos() {
this.fooService.getAllFoos().subscribe(
response => {
console.log(response);
},
error => {
console.log(error);
},
() => {
console.log('completed');
});
}
对此的服务:
getAllFoos(): Observable<foos[]> {
try {
this.fooModel.find().exec();
} catch(e) {
return e;
}
}
我得到的错误是
[Nest] 7120 - 2019-2-20 15:29:51 [ExceptionsHandler] Cannot read property 'subscribe' of undefined +4126ms
错误来自
this.fooService.getAllFoos().subscribe(
来自控制器的这一行。我真的不知道如何改变以使它现在起作用。
任何帮助或想法表示赞赏!
承诺不能被视为可观察的。使用Observable.from()
方法(docs)创建一个observable。
getAllFoos(): Observable<foos[]> {
return Observable.from(this.fooModel.find().exec());
}
rxjs版本<6:
getAllFoos(): Observable<foos[]> {
return Observable.fromPromise(this.fooModel.find().exec());
}