我希望能够查询我的mongoDB并在我的网页上显示这个结果...现在我正在使用mongojs驱动程序 - 我发现驱动程序非常适合将数据放入DB - 语法与Mongo shell相同,我可以将代码放在我的Node应用程序中。这个任务......简单地在网页上甚至在控制台上显示查询结果已经证明非常困难。以下是我的代码的相关部分以及我尝试过的内容。
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....") }
答案 0 :(得分:3)
试试这个:
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
}
答案 1 :(得分:1)
为了传统的缘故,每个人都应该进一步知道,你唯一能够操纵你的查询结果就是在回调中...所以没有把它设置为一个变量到后来傻瓜,只在回调中 - =。
使用以下命令使查询结果成为没有问题的字符串。它是标准库的东西。:
var results_not_ugly_or_messed_up = (JSON.stringify(result));
如果你想成为贫民区并在回调之外使用你的结果,你总是可以用你的“字符串化”结果(在这个例子中,results_not_ugly_or_messed_up)作为参数调用perl / python / sh / bat /任何脚本将其存储在文件等中,以便读取然后随意使用。
完整的现实生活中的例子:
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");
});
});
}