2017-01-02 3 views
0

私はAngularJSとMEAN Stackを使ってアプリケーションを構築していますが、$リソースファクトリを使用してMongoDBデータベースにその列の特定の値を持つ行セットを照会することが可能かどうか疑問に思っていました。

たとえば、私がTodoアプリケーションを作成したいと思っていて、人名のユーザー名とリマインダーを持つ文字列を含む列を持つ表がある場合、データベースにすべての行を照会することは可能ですかユーザー名列に特定のユーザー名が含まれていますか?

Todo.service.ts:それとも、私はこのような何かをしなければならない。このサンプルの場合

export function TodoResource($resource) { 
    'ngInject'; 
    return $resource('/api/todo/:query', { 
     id: '@_id' 
     query: ''; 
    }); 
} 

app.js

var list = []; 
this.Todo.query().$promise.then((data) => { 

     for(let datum of data){ 
      if(datum.userName == email){ 
       list.push(datum); 
      } 
     } 
    }); 

を、私は実際に照会していませんよテーブル全体を取得し、結果を自分でフィルタリングするだけです。これを行うにはこれが唯一の方法ですか、あるいは直接データベースに問い合わせることはできますか?

+0

フロントエンドから直接ではありません。サーバー側のコードを使用してdbクエリを作成する必要があります。フロントエンドは、サーバー側が返すものだけを管理します – charlietfl

答えて

1

NODEとMongoDBを使用している場合、Mongooseを使用している必要があります。この目的のために

その良いことが と同じように、クライアントではなくサーバー上のデータをフィルタリングするために - あなたはいけない場合は、

また、クライアントに送信される不要なデータを防ぐ - ネットワーク 上のデータの量を減らします手動で機能をサーバー上のデータをフィルタリングするために、機能はマングースにあり

var query = collection.find({_id: '001'}); 
query.exec(function (err, results) { 
    if (err) { 
     res.json(err); 
    } 
    if (results) { 
     res.json(results); 
    } 
}); 

これは、それを実行する前に、MongoDBのために、クエリにフィルタを追加する、と

を持つレコードのみを取得します

すなわち、フィルタリングされたデータを手動でデータをフィルタリングする必要はありません。これにより

、MongoDBはそれをすべて処理します。

あなたがリクエストURL内のノードサーバ上の

localhost:8080/collectionName/001 

をIDを送信することができます

function (req, res) { 
    var mainUrl = req.url.split("/"); 
    if (mainUrl.length > 2) { 
     query = collection.find({_id: mainUrl[2]}); 
    } else { 
     query = collection.find(); 
    } 
    query.exec(function (err, results) { 
     if (err) { 
      res.json(err); 
     } 
     if (results) { 
      res.json(results); 
     } 
    }); 
} 

あなたはまた、のようなURLを作ることができます。サーバー上で、その後

localhost:8080/collectionName?id='001' 

var url_parts = url.parse(req.url, true); 
var queryFactors = url_parts.query; 
var id= JSON.parse(queryFactors["id"]); 

と上記のコードを再度使用してください。

これが役に立ちます。

関連する問題