【发布时间】:2019-02-20 14:45:48
【问题描述】:
我有一个带有控制器和服务的 Nestjs 休息服务器。
在我的控制器中,有 get 函数,当有人发出 get 请求时:
@Get()
getAllFoos() {
return this.fooService.getAllFoos();
}
在我的服务中,有这个功能可以从数据库中获取文档
async getAllFoos(): Promise<foos[]> {
try {
return await this.fooModel.find().exec();
} catch(e) {
return e;
}
这行得通! 我现在需要更改它以使其与可观察对象一起使用。 我将控制器更改为:
@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(
来自控制器的这条线。我真的不知道要改变什么才能让它现在工作。
感谢任何帮助或想法!
【问题讨论】:
-
在 try{} 里面的服务中你不需要类似于你的 catch{} 的 return 语句吗..
-
我试过了。我的 IDE 将这条线标记为红色,然后显示以下消息:“Type 'Promise
' is missing the following properties from type 'Observable ': _isScalar, soure, operator, lift and 6 more. -
我不知道为什么它仍然期待一个承诺?!
-
不使用 observable 怎么办,如下所示stackoverflow.com/a/54770820/10634638
标签: javascript typescript observable es6-promise nestjs