Javascript mongodb nodejs-转换循环结构

Javascript mongodb nodejs-转换循环结构,javascript,json,node.js,mongodb,Javascript,Json,Node.js,Mongodb,我有一些代码,可以从集合中提取所有文档并将其放到网页上。简化版本如下所示: var mongodb = require("mongodb"), express = require("express"), mongoServer = new mongodb.Server('localhost', 27017), dbConnector = new mongodb.Db('systemMonitor', mongoServer), db; var app = new

我有一些代码,可以从集合中提取所有文档并将其放到网页上。简化版本如下所示:

var mongodb = require("mongodb"),
    express = require("express"),
    mongoServer = new mongodb.Server('localhost', 27017),
    dbConnector = new mongodb.Db('systemMonitor', mongoServer),
    db;

var app = new express();

app.get('/drives', function(req, res) {
  db.collection('driveInfo', function(err, collection) {
    if (err) throw err;
    collection.find({}, function(err, documents) {
      res.send(documents);
    });
  });
});

dbConnector.open(function(err, opendb) {
  if (err) throw err;
  db = opendb;
  app.listen(80);
});
我有一个driveInfo集合,其中包含一长串文档。每个文档都包含嵌套对象。我想做的是,每当有人在他们的浏览器中访问/驱动时,将整个集合打印为json对象,以便我以后可以使用jquery获取所有内容(api的开始)

但是,我收到一个错误,上面写着“TypeError:将循环结构转换为JSON”。页面上的错误指向以下代码行:

collection.find({}, function(err, documents) {
  res.send(documents);
});

我不确定问题出在哪里,也不确定自我参照在哪里。我没有正确查询集合吗?

不确定您使用的API版本,但我认为您的语法在查看API规范时可能是错误的:

声明如下:

db.collection.find(<criteria>, <projection>)

在我的例子中,我得到错误是因为我在查询(使用MongooseFind方法)时没有进行等待。请看下面

给出错误的查询(因为我没有使用wait执行此查询):

const tours = Tour.find({
    startLocation: {
      $geoWithin: { $centerSphere: [[longitude, latitude], radius] }
    }
  });
由于以下原因,我在邮递员上遇到错误:

"message": "Converting circular structure to JSON\n    --> starting at object with constructor 'NativeTopology'\n    |     property 's' -> object with constructor 'Object'\n    |     property 'sessionPool' -> object with constructor 'ServerSessionPool'\n    --- property 'topology' closes the circle"
我是如何摆脱上述错误的(添加了wait):

 const tours = await Tour.find({
        startLocation: {
          $geoWithin: { $centerSphere: [[longitude, latitude], radius] }
        }
      });

您是否尝试记录查询的输出?啊,是的,我从另一个stackoverflow答案中提取了原始代码,我猜这在语法上是不正确的。不过,你提供的那个很有用,谢谢!不客气。。这种情况经常发生在Node.js中,因为API不稳定。
 const tours = await Tour.find({
        startLocation: {
          $geoWithin: { $centerSphere: [[longitude, latitude], radius] }
        }
      });