【发布时间】:2020-03-28 06:04:46
【问题描述】:
我试图从我的数据库中仅获取特定项目,然后将其显示在表格中。
这就是我的 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" });
}
}
有我的 Aliases.service
getAliasesByDomain(domain: string): Observable<Alias> {
return this.http.get(`${this.API_URI}/aliases/aliaseslistbydomain/${domain}`);
}
还有我的组件
getAliasesByDomain() {
const token = this.getToken();
let user;
let domain;
console.log(token);
if(token){
user = token.split('.')[1];
user = window.atob(user);
user = JSON.parse(user);
domain = user.domain;
}
this.aliasesService.getAliasesByDomain(domain).subscribe(
res => {
this.alias = res;
},
err => console.error(err)
);
}
和组件html
<tr *ngFor="let aliases of alias;">
我的问题是我得到了错误:
AliasesListComponent.html:17 ERROR 错误:找不到不同的 支持对象 'to sa aliases: [object Object],[object Object]' 的 输入“字符串”。 NgFor 仅支持绑定到 Iterables,例如 数组。
因为我的响应是 Object 对象而不是数组。我该如何解析这个?
【问题讨论】:
-
您可以在服务调用中使用 map rxjs 运算符,如果数据是 Object 对象类型,则解析数据。
-
强烈建议对列表和数组使用复数形式,通过在上面的代码中使用
this.alias,您会觉得它只包含一个单个别名,而不是一个别名列表.但是鉴于您的ngFor,它包含一个列表。所以应该是aliases。
标签: javascript node.js angular typescript express