MongoDBクエリを文字列としてキャプチャして、[MongoJSドライバを使用して)表示する方法を教えてください。

StackOverflow https://stackoverflow.com//questions/10690090

質問

私のMongoDBを照会して、この結果をノードで作った私のWebページに表示することができるようにしたいと思います。今すぐMongojsドライバを使用しています - 私はデータを入れるのに非常に非常に良いドライバを見つけましたDB - 構文はMongoシェルと同じで、コードを正しく入力することができます。このタスク... Webページ上のクエリの結果を単に表示したり、コンソールでも非常に難しいことが証明されています。これが私のコードの関連部分と私が試したものです。

var databaseUrl = "test"; // "username:password@example.com/mydb"
var collections = ["graph1"]
var db = require("mongojs").connect(databaseUrl, collections);

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

私はGraph1と呼ばれるコレクションを作成し、Mongoプロンプトでは結果が得られます。注意... HTMLに表示したいのですが...しかし、私はそれをコンソールに印刷することができれば私はそれを私のHTMLで入手することができます。

現在これを出力します。

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

私が実際に欲しいもののためのいくつかのプロトタイプ、これはこれです:

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

役に立ちましたか?

解決

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

    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
    }
.

他のヒント

レガシ酒のために、あなたがあなたのクエリ結果を操作することができる唯一の時間がコールバックであることを知っているべきである......その後にa to a varに設定して、コールバック内でのみバカに設定することはできません。

次のように使用して、クエリの結果にWOUSのない文字列が発生します。標準図書館のものです。:

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

Ghettoになりたい場合は、コールバックの外で結果を使用してください。常に、「文字列化された」結果(この例では、results_not_ugly_or_messed_up)を持つPerl / Python / SH / BAT / Callをパラメータとして呼び出すことができます。読みやすくするために、それをファイルなどに保存してから使用してください。

完全実生活の例:

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");
    });

});
}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top