Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从函数查询node.js中的mongoDB?_Node.js_Mongodb_Asynchronous_Database - Fatal编程技术网

如何从函数查询node.js中的mongoDB?

如何从函数查询node.js中的mongoDB?,node.js,mongodb,asynchronous,database,Node.js,Mongodb,Asynchronous,Database,连接和查询mongodb数据库的函数(根据节点的性质,我假设大多数类型的数据库)都是非阻塞的。我如何编写一个函数来获取JSON对象中的查询结果?该函数应该管理查询和块,直到返回查询为止 基本上,我希望能够做到以下几点: http.createServer(function(request,response){ var searchQuery = parseQueryFromUrl(request.url); var searchResults=queryDatabase(searc

连接和查询mongodb数据库的函数(根据节点的性质,我假设大多数类型的数据库)都是非阻塞的。我如何编写一个函数来获取JSON对象中的查询结果?该函数应该管理查询和块,直到返回查询为止

基本上,我希望能够做到以下几点:

http.createServer(function(request,response){

   var searchQuery = parseQueryFromUrl(request.url);
   var searchResults=queryDatabase(searchQuery);
   var document = renderFile(fileTemplate,searchResults);
   response.writeHead(200);
   response.write(document);
   response.end();

});

这可能吗?

从手机上书写,这里是“快速回答”,我回家后会编辑:

router.get('/search/*', function(req, res, term){
  res.writeHead(200, {'Content Type:':'text/plain'});
  var db = new mongo.Db('dbname', server);
  db.open(function(err, db){
    db.createCollection("collection_name", function(err, collection){
      db.collection('foo').find({'a':term}).toArray(function(err, items){
        console.log(items);
      });
    });
  });
});

这里有更多关于查询的信息:

谢谢!但是我试图将整个db.open(…)函数放在另一个函数中,以添加一些抽象,保持代码更干净。这可能吗?你能编辑你的问题并展示你到目前为止有什么吗?是的,这是有可能的。这已经被问过/回答过很多次了。什么不合理?节点是异步的,所以您需要使用回调,或者像Mongoose这样的对象层,它也可以公开承诺。