使用Angular 8将http.get observable转换为字符串的最简单示例

使用Angular 8将http.get observable转换为字符串的最简单示例,angular,string,observable,Angular,String,Observable,我使用Angular通过Express访问Mongo中的值。 我似乎从Express获得了正确的响应,例如发送JSON、数组或简单的字符串值 设置订阅时,我可以使用console.log()中的变量访问这些值。但是,我不清楚如何将该值解析为在实际的async\await调用后可以在console.log中打印的变量 expressurl/testmongothree返回一个字符串。使用以下内容访问同一URL: basictest(){ return this.http.get('testmo

我使用Angular通过Express访问Mongo中的值。 我似乎从Express获得了正确的响应,例如发送JSON、数组或简单的字符串值

设置订阅时,我可以使用
console.log()
中的变量访问这些值。但是,我不清楚如何将该值解析为在实际的
async\await
调用后可以在console.log中打印的变量

expressurl/testmongothree返回一个字符串。使用以下内容访问同一URL:

basictest(){
  return this.http.get('testmongothree/',{responseType: 'text'}).subscribe(data => {
    console.log(data); 
 });
}  
结果是0)字符串的控制台日志,但只有1)在
async/await
之后控制台日志中的“订户”通知:

async basic_test() {
   let res = await this._apiService.basictest();
   console.log("console",res); 
  };
看看其他关于角度、可观测值以及将其值转换为字符串的堆栈溢出示例,这些示例和示例似乎最有希望

从根本上看,这个问题与其他类似的问题有着共同的问题-它试图使异步函数在同步上下文中工作。参见,和

那么,问题是什么是最容易的方式来延迟响应

console.log("console",res)
直到
等待
问题解决为止

[在一天结束时,这可能是试图把一个圆钉子塞进一个方孔中。]


编辑:我简化了问题以缩小焦点。合并Andrei的建议缓解了一个令人困惑的问题。

默认情况下,Angular将尝试将响应解析为JSON。要防止传递响应,请在选项中键入:“text”

basictest(){
  return this.http.get('testmongothree/', {responseType: 'text'}).subscribe(data => {
    console.log(data); 
 });
}  

到目前为止,我发现的方法——很可能是有问题的——是创建解析可观察值的值,并更新和返回这些值,即

basicinfo;  

basicobservable = this.http.get('testmongothree/', { responseType: 'text' }).subscribe(data => {
        console.log("api console", data);
        this.basicinfo = data;
      });
    
basictest() {
        this.http.get('testmongothree/', { responseType: 'text' }).subscribe(data => {
          console.log("api console", data);
          this.basicinfo = data;
        });
        return this.basicinfo;
      }

我觉得你是在隐藏线索。第一部分讨论存在错误。那么为什么会有错误呢?试图解析的无效json是什么?