2015-02-07 2 views
1

POST에서 매개 변수를 받고 있는데 해당 매개 변수가있는 경우 데이터 저장소 쿼리를 변경하려고합니다. 다음은 게시물 메시지에서 "제목"변수를받을 수도 있고받지 못할 수도있는 예입니다. 존재하는 경우 필터로 쿼리에 포함하려고합니다.조건을 기반으로 데이터 저장소 쿼리에 필터를 추가하는 방법

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

제안 사항이 있으십니까?

답변

1

매개 변수가 존재하는 경우 쿼리에서 다른 Query.Filter() 메서드를 선택적으로 호출 할 수 있습니다 (선택 사항). 파생 된 다른 쿼리 일 수 있으므로 반환 값을 저장해야합니다.
그 이유는 모든 쿼리 작성기/수정 자 메서드가 여러 작업을 연결하는 데 사용할 수있는 파생 쿼리를 반환하기 때문입니다. 하나의 단계로 모든 작업을 수행 할 필요는 없지만 중간 결과 쿼리를 저장하고 거기에서 "작업"을 계속 수행 할 수 있습니다 (예 : 새 필터 추가). 항상 반환 값을 저장하는 것을 기억하고 마지막 메서드에서 반환 된 Query을 사용해야합니다.

솔루션 (후보) :

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

참고 :

당신이 그것을 언급하지 않았다,하지만 난 titlestring 가정. string 유형의 변수는 nil 값을 가질 수 없습니다.

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

이 뛰어난이 내가 찾던 정확히 무엇을하십시오 string의 값이 0 때문에/테스트를 비교하는 것을 사용하는 빈 문자열 ""입니다. –

관련 문제