Javascript 如何将MongoDB查询捕获为字符串并显示在我的Node JS页面中(使用mongojs驱动程序)?
我希望能够查询我的mongoDB并在我用Node制作的网页上显示此结果…现在我正在使用mongojs驱动程序-我发现该驱动程序非常适合将数据放入DB-语法与MongoShell相同,我可以将代码正确地放入我的Node应用程序中。这个任务…仅仅在网页上,甚至在控制台上显示查询结果,已经证明是非常困难的。下面是我代码的相关部分和我尝试的内容Javascript 如何将MongoDB查询捕获为字符串并显示在我的Node JS页面中(使用mongojs驱动程序)?,javascript,node.js,mongodb,mongojs,Javascript,Node.js,Mongodb,Mongojs,我希望能够查询我的mongoDB并在我用Node制作的网页上显示此结果…现在我正在使用mongojs驱动程序-我发现该驱动程序非常适合将数据放入DB-语法与MongoShell相同,我可以将代码正确地放入我的Node应用程序中。这个任务…仅仅在网页上,甚至在控制台上显示查询结果,已经证明是非常困难的。下面是我代码的相关部分和我尝试的内容 var databaseUrl = "test"; // "username:password@example.com/mydb" var collection
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,也不要将其设置为var,以便在之后进行愚弄,仅在回调中) 使用以下命令可以使查询结果成为一个没有错误的字符串。这是标准的图书馆资料
var results_not_ugly_or_messed_up = (JSON.stringify(result));
如果你想在回调之外使用你的结果,你可以调用一个perl/python/sh/bat/任何带有“stringized”结果的脚本(在这个例子中,results\u not\u丑恶的或\u混乱的)作为一个参数,将其存储在一个文件中,等等,然后读取并随意使用
对于完整的真实示例:
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");
});
});
}