2012-05-21 14 views
5

私はmongoDBを照会して、この結果をノードで作った私のWebページに表示したいと思っています。今はmongojsドライバを使用しています - 私はDBにデータを入れるのに非常に非常に良いドライバを見つけました - 構文はMongoシェルと同じで、Nodeアプリケーションにコードを置くことができます。この作業は... Webページやコンソール上でクエリの結果を表示するだけでは非常に困難であることが証明されています。ここに私のコードの関連部分と私が試みたものがあります。MongoDBのクエリを文字列として取得し、ノードJSページ(mongojsドライバを使用)に表示するにはどうすればよいですか?

var databaseUrl = "test"; // "username:[email protected]/mydb" 
var collections = ["graph1"] 
var db = require("mongojs").connect(databaseUrl, collections); 

console.log(db.graph1.find()); 

グラフ1と呼ばれるコレクションを作成しました。これはmongoプロンプトで結果が得られます。注... HTMLで表示したいのですが、コンソールに印刷してHTMLに入れることができれば訴えます。

は、それは現在、この出力:

{_oncursor: { get: [Function], put: [Function] } } 

これで私が実際に何をしたいのプロトタイプのいくつかの種類、:

{ "x" : "0", "y" : "1343725568", "_id" : ObjectId("4fba6....") } 

答えて

2

はこれを試してみてください:

db.graph1.find({}, function(err, result){ 
    if (err || !result) console.log(" an error has occurred"); 
    else { 
    console.log(result); 
    } 
    }); 

コンソールログをその関数のプロトタイプであるdb.graph1.find()の戻り値を出力していたとします。これは非同期関数なので何も役に立ちません。それが取得したデータを使用可能なことを行うための唯一の方法は、データを処理するするコールバックを渡すことです:

db.graph1.find({ //what you want to search for here }, callback); 

    function callback(result_from_mongo) { 
    // do stuff here with result_from_mongo 
    } 
+0

ありがとう!これは動作します! – PinkElephantsOnParade

1

レガシー期すため、誰もがあなたのクエリ結果を操作することができる唯一の時間であることをさらに知っておくべきコールバックでは、コールバック内でのみvarに設定しないでください。

クエリ結果を悲しいことなく文字列にするには、以下を使用します。これは、標準ライブラリのものです。:

var results_not_ugly_or_messed_up = (JSON.stringify(result)); 

あなたはゲットーなるとコールバックの外で、あなたの結果を使用したい場合、あなたは常にあなたの「文字列化」結果で/何でもスクリプトのperl/pythonの/ SH /バットを呼び出すことができます(この例ではresults_not_ugly_or_messed_up)をパラメータとして格納してファイルなどに格納して読んでから使用してください。フル実生活例えば

db.newguestbook.find({"Name" : /[Aa]/ },[],function(err,p) //newguestbook is a collection I have  
//you will need to change that unless you make a collection called newguestbook 
{ 
    cursor = p; 
    console.log(cursor); 
    console.log(JSON.stringify(cursor))); //We have a nice string, see? 
    var exec = require('child_process').exec; 
    exec("perl writetofile.pl " + JSON.stringify(cursor) , function(err, 
    stdout, stderr) 
    { 
     console.log("Perl run to store this result in a file"); 
    }); 

}); 
}