网址中的帆蓝图查询不起作用

Posted

技术标签:

【中文标题】网址中的帆蓝图查询不起作用【英文标题】:sails blueprints query in url not working 【发布时间】:2018-01-23 19:25:04 【问题描述】:

我对我的 api 有各种 GET http 调用,格式如下:

/api/posts?userId=3

但是,它不会按其userId 列过滤帖子,而只会返回所有帖子,而不管帖子的 userId 是什么。

这种语法在我过去的项目中也有效,并记录在 here 中。 (他们给出的例子是GET /purchase?amount=99.99)。

我看到的问题没有以这种方式通过默认路由解决查询语言,因此我无法找到帮助。对可能出现的问题有任何猜测吗?

更新:

什么按预期工作

req.query 正在被策略设置和读取(例如,?userId=3req.param("userId") 找到) /api/posts?userId=3&populate=userId 填充 userId 字段,(但仍返回所有用户的所有帖子) 按主键过滤(例如?id=5)过滤并按预期只返回一条记录 在 api 或sails 控制台中工作时,(例如Posts.find(userId: 3))可以工作

什么不符合预期

外键过滤(例如?userId=6) 按非外键过滤(例如?name=test) 过滤使用where(例如&where="userId":1

【问题讨论】:

只是抛出一些想法......你有 PostsController 吗?你的蓝图休息选项打开了吗?我假设userId 连接到User 模型...如果您尝试过滤非链接字段,过滤是否有效? @arbuthnott 我确实有一个 PostsController,并且蓝图其余设置为 true。是的,模型中的 userId 属性是userId: model: 'users', required: true。但这没关系,因为每条记录都有一个 userId 列,所以我相信查询应该以任何方式工作(?)。回复:未链接的字段,/api/posts?userId=3&asdf=3 同样返回所有帖子,如果这回答了您的问题 我没有在控制器中定义find控制器动作,它只是使用水线默认值 我询问了一个非链接字段,因为在后台,我知道 Waterline 可能会为链接字段命名一些意想不到的东西(如 _post_user 等),这可能是使用时的错误来源蓝图 API。我想知道/api/posts?title=sometitle 之类的东西是否正确过滤。如果是这样,我可能会开始深入研究 Waterline 和原始数据库,以查看我的 userId 字段在数据库级别的真实外观,并查看链接字段的命名是否存在脱节。 @arbuthnott 嗯,好主意。是的,其他查询(非外键)也没有过滤结果。但是使用查询填充(例如?populate=userId 确实有效,值得。 【参考方案1】:

事实证明,我在策略中的每个查询中都添加了“where”子句(例如,"where: "status": "active")。在查询字符串中自动添加一个“where”overrides the other params,因此没有看到任何其他内容。 (准确地说,如果你有 where 子句,则永远不会看到其他条件)

由于某种原因,“where”也无法为sails 0.12.13 设置搜索条件,所以我最终破解了sails 中的parseCriteria 函数actionUtils,并使用了他们为v 提供的函数。 1 对我有用。

希望以后能对大家有所帮助

【讨论】:

以上是关于网址中的帆蓝图查询不起作用的主要内容,如果未能解决你的问题,请参考以下文章

动作邮件程序中的默认网址不起作用

CSS 媒体查询在三星 Galaxy 上不起作用

旧网址的网址重写不起作用

Javascript 中的媒体查询在这里不起作用

子查询中的子查询在配置单元中不起作用

Htaccess 不起作用 - 不错的网址