我如何捕获一个string的MongoDB查询,并显示在我的节点的JS页面(使用mongojs驱动程序)?

我想能够查询我的mongoDB,并显示在我的网页上使用节点的结果…现在我正在使用mongojs驱动程序 – 我发现驱动程序非常好,把数据放入数据库 – 语法与Mongo shell相同,我可以把代码放在我的Node应用程序中。 这个任务…简单地在网页上甚至在控制台上显示查询的结果已被certificate是非常困难的。 这里是我的代码的相关部分和我试过的。

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中find它。

它目前输出这个:

 {_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()返回值。 它不会返回任何有用的东西,因为它是一个asynchronous函数。 使用它检索的数据做可用事情的唯一方法是传递一个callback函数来处理数据:

  db.graph1.find( { //what you want to search for here }, callback); function callback(result_from_mongo) { // do stuff here with result_from_mongo } 

为了传统,每个人都应该进一步了解,唯一一次你可以操纵你的查询结果是IN CALLBACK …所以没有把它设置为一个var以后,只能在callback中调用)。

使用以下内容使查询结果成为一个没有问题的string。 这是标准库的东西:

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

如果你想成为贫民窟,并在callback之外使用你的结果,你总是可以用你的“string化”结果(在这个例子中是results_not_ugly_or_messed_up)作为参数来调用一个perl / python / sh / bat / whatever脚本来存储它一个文件等,读取,然后使用,请你。

对于一个完整的现实生活的例子:

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