javascript - 将 Node.js 参数传递给 mongodb 请求

标签 javascript node.js mongodb nosql

我正在 node.js 中开发一个简单的网络服务。我正在使用 choreographer 来路由 http 调用。此代码工作正常:

router.get('/search/*', function(req, res, term){
  res.writeHead(200, {'Content Type:':'text/plain'});
  db.collection('foo').find({'a':1}).toArray(function(err, items){
  console.log(items);
    res.write(JSON.stringify(items));
    res.end();
   });
  });

如您所见,find 方法查找 {'a':1},这工作正常,返回了一条记录。但是当我想将搜索词从路由器传递给查询时,我得到一个空响应:

router.get('/search/*', function(req, res, term){
  res.writeHead(200, {'Content Type:':'text/plain'});
  db.collection('foo').find({'a':term}).toArray(function(err, items){
  console.log(items);
    res.write(JSON.stringify(items));
    res.end();
   });
  });

有什么想法吗??

编辑:我已经检查了 term 的值,正如下面评论中所建议的那样,它是 1,这正是我所期望的。

最佳答案

会不会是数据库连接比实际路由花费的时间更长?

如果您定义“术语”并得到响应,则很可能在数据库中找不到该术语或数据库连接以某种方式失败。

一种方法是从回调函数初始化和调用数据库。

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.close();

保留语法错误。

关于javascript - 将 Node.js 参数传递给 mongodb 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8390018/

相关文章:

javascript - 为什么这个时钟上没有显示秒针? (带有 javascript 的 HTML5 cavas 层)

node.js - Kubernetes 相当于 `docker run --init`

ruby-on-rails - Mongoid 有 Map/Reduce 吗?

javascript - 如何在三星智能电视中创建表单

javascript - 使用 geojson 多边形的鼠标悬停操作

javascript - 使用 Angular 1 Interpolation 将动态值传递给函数参数

javascript - 如何实际拦截 res.render

javascript - 如何使用 AngularJs 获取本地文件夹名称?

javascript - 保存使用 GridFS 下载的文件以在网站上使用

java - 如何使用 Java 驱动程序获取 MongoDB 中嵌入文档数组的特定值