Javascript 从响应而不是对象获取数组

Javascript 从响应而不是对象获取数组,javascript,node.js,angular,typescript,express,Javascript,Node.js,Angular,Typescript,Express,我试图从数据库中只获取特定的项,然后将其显示在表中 这就是我的sql查询的样子 public async aliasesListByDomain(req: Request, res: Response): Promise<void> { const { domain } = req.params; const aliases = await pool.query('SELECT * FROM virtual_aliases INNER JOIN virtual_dom

我试图从数据库中只获取特定的项,然后将其显示在表中

这就是我的sql查询的样子

public async aliasesListByDomain(req: Request, res: Response): Promise<void> {
    const { domain } = req.params;
    const aliases = await pool.query('SELECT * FROM virtual_aliases INNER JOIN virtual_domains ON virtual_aliases.domain_id = virtual_domains.id WHERE virtual_aliases.domain_id = ?', [domain]);
    if (aliases.length > 0) {
        res.json(aliases);
    } else {
        res.status(404).json({ message: "Alias doesn't exists" });
    }
}
和组件html

<tr *ngFor="let aliases of alias;">

我的问题是我犯了错误:

AliasesListComponent.html:17错误:找不到不同的 支持对象“到sa别名:[object object],[object object]”的 键入“string”。NgFor仅支持绑定到Iterables,例如 数组


因为我的响应是对象而不是数组。我如何解析这个

如果回调给您一个数组,您可以在服务中这样指定它

 getAliasesByDomain(domain: string): Observable<Alias[]> {
    return this.http.get<Alias[]>(`${this.API_URI}/aliases/aliaseslistbydomain/${domain}`);
  }
getAliasesByDomain(域:字符串):可观察{
返回this.http.get(`${this.API_URI}/aliases/aliaseslistbydomain/${domain}`);
}

如果服务器的响应与预期的数据模型不匹配,可以使用rxjs转换响应

import { map } from 'rxjs/operators';

getAliasesByDomain(domain: string): Observable<Alias[]> {
    return this.http.get(`${this.API_URI}/aliases/aliaseslistbydomain/${domain}`).pipe(
        map((response: any) => {
            return transform(response);
        })
    );
}

transform(response: any): Alias[] {
    // your translation logic here
}
从'rxjs/operators'导入{map};
getAliasesByDomain(域:字符串):可观察{
返回this.http.get(`${this.API_URI}/alias/aliaseslistbydomain/${domain}`).pipe(
map((响应:任意)=>{
返回变换(响应);
})
);
}
转换(响应:任意):别名[]{
//你的翻译逻辑在这里
}

您可以在服务调用中使用map rxjs操作符,如果数据类型为Object Object,则可以解析数据。强烈建议对列表和数组使用复数,方法是使用
this.alias
在上面的代码中,您给人的印象是它只包含一个别名,而不是一个别名列表。但考虑到您的
ngFor
,它包含一个列表。所以它应该是
别名
。我应该说:)我不会再这样做了:)我还应该说:很好,谢谢你发布它。:-)(那是我的一票,所以也许你已经猜到了,但还是…)对不起,英语不是我的母语;)
 getAliasesByDomain(domain: string): Observable<Alias[]> {
    return this.http.get<Alias[]>(`${this.API_URI}/aliases/aliaseslistbydomain/${domain}`);
  }
import { map } from 'rxjs/operators';

getAliasesByDomain(domain: string): Observable<Alias[]> {
    return this.http.get(`${this.API_URI}/aliases/aliaseslistbydomain/${domain}`).pipe(
        map((response: any) => {
            return transform(response);
        })
    );
}

transform(response: any): Alias[] {
    // your translation logic here
}