1

angularJsとmongoDBをrestheartで使用して、データベースを構築するWebサイトを構築しています。

ここに画像の説明を入力

私の意見はこのように書かれていますが、

        <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 つの入力エリアすべてにテキストまたは空白を入力する必要があることがわかりました。その後、1 つの領域だけを入力し、残りの 4 つの領域を空白のままにすると、結果が表示されました。フィルターをトリガーするには、1 つの入力では不十分なようです。

ng-init を使用して空白を 1 つ使用し、空白を 1 つ使用しようとしましたが、まったく機能しません。ng-init に 1 文字ある場合のみ、フィルターがトリガーされます。

restheartフィルターの「または」引数が問題を解決するかどうか考えていましたか? もしそうなら、書き方を教えてください。

この問題を克服するにはどうすればよいですか?

4

1 に答える 1

0

フィルターqparam にいくつかの値を渡すと、実際には AND 演算子を使用してそれらが連結されます。

ORを使用したい場合は、次のようなものを試してください(私はテストしていません):

$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/を参照してください

于 2016-01-07T10:22:04.290 に答える