我正在从 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")
- 1 回答
- 0 关注
- 175 浏览
添加回答
举报
0/150
提交
取消