簡體   English   中英

如何根據條件向數據存儲區查詢添加過濾器

[英]How to add a filter to a datastore query based on condition

我正在從POST接收參數,並且基於這些參數是否存在,我想更改數據存儲區查詢。 這是一個示例,其中我們可能會或可能不會從發布消息中收到“ title”變量。 如果確實存在,我想將其作為過濾器包含在查詢中:

q := datastore.NewQuery("book").
    Filter("author =", "DB").
    if title != nil {Filter("title =",title).}
    Order("author")

有什么建議么?

如果該參數存在,則可以選擇在查詢上調用另一個Query.Filter()方法。 只要確保您存儲了返回值即可,因為它可能是一個不同的派生查詢。
原因是所有查詢構建器/修飾符方法都返回派生查詢,您可以使用該查詢鏈接多個操作。 但是,您不必一do而就,可以存儲中間結果查詢並從那里繼續執行“工作”(例如,添加新的過濾器)。 只要記住始終存儲返回值,就必須使用最后一個方法返回的Query

解決方案(候選人):

q := datastore.NewQuery("book").Filter("author =", "DB")
if title != nil {
    q = q.Filter("title =", title)
}
q = q.Order("author")

注意:

您沒有提到它,但我認為title是一個string string類型的變量不能具有nil值。 string的零值是空字符串""因此可以使用它進行比較/測試:

q := datastore.NewQuery("book").Filter("author =", "DB")
if title != "" {
    q = q.Filter("title =", title)
}
q = q.Order("author")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM