2017-02-28 4 views
0

まず、小さなデータセットですので、APIを使用してプロダクションDB全体を1つの画面にダンプするのは賢明ではないでしょう... Node.jsアプリケーションのAPIエンドポイントを経由して戻るには、全体の(小さな)DBのJSONダンプを取得するだけです。Node.js APIでMongoDBのコンテンツ全体を表示

私のアプリケーションが正常にこのコードで単一のレコードを返すん:

MongoClient.connect("mongodb://localhost:27017/search", function (err, db) { 

    if(err) throw err; 

    db.collection('results', function(err, collection) { 
     // search for match that "begins with" searchterm 
     collection.findOne({'string':new RegExp('^' + searchterm, 'i')}, function(err, items){ 
      // get result 
      var result; 
      if (items == null || items.result == null){ 
       result = ""; 
      } 
      else { 
       result = items.result; 
      } 
      // return result 
      res.send(result); 
     }); 
    }); 
}); 

だから私は、ノードが正常にモンゴに話している知っているが、どのように私は基本的にあなたが実行したときに何を得る返すために、このクエリ/コードを微調整することができます次のMongoDBコマンドラインで:

$ db.results.find() 

答えて

0

ありがとうございました。私はあなたの回答が{}をクエリとして使用する点で正しい方向に向いています。ここでは、最終的に私のために働いていたコードは次のとおりです。

db.collection('results', function(err, collection) { 
    collection.find({}).toArray(function(err, docs) { 
     res.send(docs); 
    }); 
}); 

のtoArray(...)一部である重要な要素。

+0

なぜtoArrayをタックする必要があるのか​​、私は非常に興味があります。使用しているMongoDB/Mongooseのバージョンを共有していることを心に留めてください。 –

+0

私は正直言って、私はモンゴースが何であるか分かりません。私はMac OS X Sierra上でMongoDBのv3.2.0を実行しています。私はtoArray(...)を使用しました。ランダムな試行錯誤の後、これが最初に働いたからです。あなたが正しい選択肢を提案するなら、私はそれに行くでしょう。 – HomerPlata

+0

Mongooseは、JavaScript/Node.js用のMongoDBを包むラッパーで、少し保守しやすく読みやすいコードに抽象化しています。私はそれが私の提案された解決策がうまくいかなかった理由だと思う。 Mongooseはおそらくあなたがしたことを正確に行います: 'toArray()'内部的に。 –

2

これはスニペットです。

model.find({}).exec(function (err, result) { 
     if (err) {console.error(err); return;} 
     else return result; 
    }); 

まず、定義済みのモデルを使用してfindを呼び出します。ロジックは、空のオブジェクト{}を基本的にレンダリングすることです。このモデルからすべてを選択します。

意味がありますか?

+0

また、mongodbとの約束を使用することをお勧めします。好ましくはブルーバードである。 – Remario

1

これまで説明した通りです。

collection.find({}).exec((err, result) => { 
    if (err) { 
    console.log(err); 
    return; 
    } 
    if (result.length > 0) { 
    // We check that the length is > 0 because using .find() will always 
    // return an array, even an empty one. So just checking if it exists 
    // will yield a false positive 
    res.send(result); 
    // Could also just use `return result;` 
}); 
関連する問題