我想使用SailsJS“Find Where”蓝图路线创建一个具有多个标准的复杂查询。但是,我无法成功使用 equals 比较器和和条件。我找不到关于如何实现 Find Where 路由的充分文档,因此我完成了source code并提出了以下方案。
使用SailsJS 查找蓝图路径,如何实现:
以下方案将返回相应的响应:
http://localhost:1337/api/user?name=fred
http://localhost:1337/api/user?where={"name":{"startsWith":"fred"}}
http://localhost:1337/api/user?where={"name":{"endsWith":"fred"}}
http://localhost:1337/api/user?where={"name":{"contains":"fred"}}
http://localhost:1337/api/user?where={"name":{"like":"fred"}}
http://localhost:1337/api/user?where={"or":[{"name":{"startsWith":"fred"}}]}
http://localhost:1337/api/user?where={"or":[{"name":{"startsWith":"fred"}},{"path":{"endsWith":"fred"}}]}
以下方案返回空响应:
http://localhost:1337/api/user?where={"name":{"equals":"fred"}}
http://localhost:1337/api/user?where={"name":{"=":"fred"}}
http://localhost:1337/api/user?where={"name":{"equal":"fred"}}
http://localhost:1337/api/user?where={"and":[{"name":{"startsWith":"fred"}}]}
http://localhost:1337/api/user?where={"and":[{"name":{"startsWith":"fred"}},{"path":{"endsWith":"fred"}}]}
答案 0 :(得分:9)
使用"和"查询使用&符号一起使用查询字符串语法和链标准。对于更高级的查询,如OR
或复杂的运算符,最好编写控制器操作。如果您决定坚持使用蓝图,则可以使用编码为JSON的大多数有效Waterline查询。
对于简单查询,您使用查询字符串方法。以下将构建一个"和"查询姓名和学校。
http://localhost:1337/api/user?name=fred&school=foo
要将更多高级操作符链接在一起,以下操作应该有效:
http://localhost:1337/api/user?where={"name":{"startsWith":"fred"},"path":{"endsWith":"fred"}}