如何使用“查找哪里”SailsJS蓝图路线?

时间:2014-08-13 21:23:29

标签: node.js mongoose sails.js waterline

使用案例

我想使用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"}}]}

1 个答案:

答案 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"}}