为了账号安全,请及时绑定邮箱和手机立即绑定

如何根据条件向数据存储查询添加过滤器

如何根据条件向数据存储查询添加过滤器

Go
倚天杖 2021-09-13 15:56:16
我正在从 POST 接收参数,并根据这些参数是否存在我想更改数据存储查询。这是一个示例,我们可能会或可能不会从帖子消息中收到“标题”变量。如果它确实存在,我想将它作为过滤器包含在查询中:q := datastore.NewQuery("book").    Filter("author =", "DB").    if title != nil {Filter("title =",title).}    Order("author")有什么建议?
查看完整描述

1 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

Query.Filter()如果参数存在,则可以选择在查询上调用另一个方法。请确保您存储返回值,因为它可能是一个不同的派生查询。

原因是所有查询构建器/修饰符方法都返回一个派生查询,您可以使用它来链接多个操作。不过,您不必一步完成所有操作,您可以存储中间结果查询并从那里继续“工作”(例如添加新过滤器)。请记住始终存储返回值,并且必须使用Query最后一个方法返回的值。


解决方案(候选人):


q := datastore.NewQuery("book").Filter("author =", "DB")

if title != nil {

    q = q.Filter("title =", title)

}

q = q.Order("author")

笔记:


你没有提到它,但我认为title是一个string. 类型变量string不能有nil值。a 的零值string是空字符串,""因此使用它来比较/测试:


q := datastore.NewQuery("book").Filter("author =", "DB")

if title != "" {

    q = q.Filter("title =", title)

}

q = q.Order("author")


查看完整回答
反对 回复 2021-09-13
  • 1 回答
  • 0 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信