2016-01-06 50 views
1

我正在構建一個網站,使用angularJs和mongoDB with restheart構建數據庫。如何觸發restheart過濾器?

enter image description here

我的輸入是這樣寫的,

 <th><input types="number" ng-model="GeneN" ng-change="change()"></th> 
     <th><input types="number" ng-model="Des" ng-change="change()"></th> 
     <th><input types="number" ng-model="Org" ng-change="change()"></th> 
     <th><input types="number" ng-model="Site" ng-change="change()"></th> 

我的過濾參數是

$scope.change = function(){ 
     $http.get("http://localhost:3000/pupdb/pupdb/?count&pagesize=10&filter={'uniprot_AC':{'$regex':'(?i)"+$scope.UniP+".*'},'gene_name':{'$regex':'(?i)"+$scope.GeneN+".*'},'species':{'$regex':'(?i)"+$scope.Org+".*'},'description':{'$regex':'(?i)"+$scope.Des+".*'},'site':{'$regex':'(?i)"+$scope.Site+".*'}}") 

事實證明,我必須輸入文本或空白在所有5個輸入區域之前,我可以激活過濾器並返回結果。之後,我只能在一個區域輸入,另外4個空白,結果顯示。似乎只有一個輸入不足以觸發過濾器。

我嘗試使用ng-init並使用一個空格並且沒有一個空格,但它根本不工作。只有在ng-init中有一個字符時,它纔會觸發過濾器。

我在想如果restheart過濾器中的「或」參數能夠解決問題嗎?如果是這樣,請讓我知道如何寫。

我該怎麼辦才能解決這個問題?

回答

0

將幾個值傳遞給過濾器 qparam實際上將使用AND運算符鏈接它們。

如果你要使用或嘗試像(我沒有測試過):

$http.get("http://localhost:3000/pupdb/pupdb/?count&pagesize=10&filter={'$or': [{ "description" : { "$regex" : "(?i)\"+$scope.Des+\".*" }}, { "gene_name" : { "$regex" : "(?i)\"+$scope.GeneN+\".*" }}, { "site" : { "$regex" : "(?i)\"+$scope.Site+\".*" }}, { "species" : { "$regex" : "(?i)\"+$scope.Org+\".*" }}, { "uniprot_AC" : { "$regex" : "(?i)\"+$scope.UniP+\".*" }}]") 

https://docs.mongodb.org/manual/reference/operator/query/or/

相關問題