【发布时间】:2017-12-26 17:28:08
【问题描述】:
只要 db 列 subCatId 需要一个 varchar 字符串,它就可以正常工作。
this.params = {
'filter': `(${column} like ${subCatId}%)`
}
当列需要整数时失败,可能是由于反引号将整个 URL 参数转换为字符串。
我一直在尝试这种方法的变体,但都没有奏效。他们不会编译。
'filter': `${column}%3D`${subCatId}
or
'filter': `${column}=`${subCatId}
这确实有效,使用 Swagger 生成:
http://localhost:8080/api/v2/pfpsql/_table/skills?
fields=skill_id%2C%20skill_name%2C%20category_id&filter=category_id%20%3D%202
因此,Swagger 示例不会对表列整数约束产生问题。 Angular 代码可以。字符串末尾的“2”是 Angular HttpParams 中的问题。字段工作正常。
任何想法如何做到这一点?可能很简单,但我是这个主题的新手,并且通过多次搜索无法在线找到建议。
【问题讨论】:
-
您能否提供一些示例,说明在您说它不起作用的情况下 URL 的样子?
?之后的任何内容都称为查询-字符串,因此整个内容都是一个字符串(是的,它押韵),即使在您的 Swagger 示例中也是如此。 -
这是一个渗透:localhost:8080/api/v2/pfpsql/_table/…。结果只是表中的第一条记录,与 category_id 无关。我应该提到编译问题是在上面的 Angular 版本中 category_id 的右侧。这些领域运作良好。最后的“2”是问题所在。我会将此评论添加到主帖中。
-
为什么您的第一个示例以
%结尾?我猜这是针对LIKE '%'样式的查询,但如果列需要整数,那当然行不通。我无法确切地看到您要实现的目标,因为您的“坏”示例与第一个代码 sn-p 的结构不同。顺便说一句,这看起来有受到SQL Injection 攻击的风险...... -
是的,就像'喜欢'。我只是在我的帖子中更改了它。那是有效的设置——直到我将列从字符串更改为整数,因为看起来数字 id 应该是整数。这是出于开发目的。当我到达后端编码时,我会将参数发送到服务器以进行查询。
-
对于没有编译的两行,只需将第二个 ` 移动到行尾,看看是否符合您的需要。
标签: angular