OData:对url请求中的数字(ID)字段进行通配符(startswith)筛选
OData:Wildcard (startswith) filtering for number (ID) fields in the url request
我一直在研究一种通过OData和JavaScript对实体的数字ID字段执行模糊搜索的方法。到目前为止,我还没有找到我正在寻找的答案。我可以使用"Startswith"filter选项完美地筛选其他edm.string列,但当我试图传入任何其他非字符串类型时,我会从服务器返回类型错误响应。
在我控制数据库的应用程序中,通过创建我需要的视图并将视图的数字类型转换为字符串,我成功地绕过了这一点。然而,这似乎有点过头了,我特意为整个数据集创建了一个视图,这样我就可以允许用户通配符搜索ID,而OData查询在其他方面运行得很好。
有人找到一个好的解决方案吗?非常感谢。
不幸的是,我认为您已经发现了最好的解决方案之一(创建视图)。您还可以创建一个服务操作,允许您进行模糊搜索。
你的后端使用什么?LINQ to Entities不支持这一点,但您可以创建一个类似这样的服务操作(为了证明它可以工作,您可以在Products
之后插入ToList()
调用,只是确保不要将类似的东西部署到生产中:):
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class ScratchService : DataService<ScratchContext>
{
[WebGet]
public IQueryable<Product> FuzzySearch(string idStartsWith)
{
var context = new ScratchContext();
return context.Products.Where(p => p.ID.ToString().StartsWith(idStartsWith));
}
// ...
}
这不是我们经常听到的问题,但我肯定可以在团队中提出,当我们开始OASIS标准化过程时,这是我们可以考虑的事情。
相关文章:
- JavaScript中的通配符日期形式
- JavaScript上的通配符(也许这不费吹灰之力?)
- 如何在ie7或更高版本中设置密码字段的占位符
- 带有通配符的姓氏Reg表达式
- Mongoose:布尔型'或者'使用通配符查询
- jQuery的通配符委派
- 聚合物和页面.js路由中的通配符
- javascript中通配符搜索的正则表达式
- Node.js/Expss.js.如果与通配符路由器一起使用,则无法识别静态路由器
- 如何在JQuery中使用带有.html的通配符
- 如何解释BusterJS测试路径中的通配符
- Javascript-IF语句中的通配符
- jQuery选择器中的通配符
- 函数调用中的javascript通配符
- OData:对url请求中的数字(ID)字段进行通配符(startswith)筛选
- Javascript:通配符正则表达式搜索
- 初始化后更改输入字段的占位符文本
- Javascript/Jquery.使用带通配符的正则表达式将纯文本替换为html
- 将通配符与javascript拆分函数结合使用
- 使用javascript's替换为通配符以更改字符串中的width属性