当前位置: 首页 > 面试题库 >

mongodb nodejs-转换循环结构

陆正德
2023-03-14
问题内容

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

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集合,其中包含很长的文档列表。每个文档包含嵌套的对象。我想做的是,每当有人在其浏览器中访问/
drive时,将整个集合打印为json对象,以便以后可以用jquery抓取所有内容(api的开头)

但是,我收到一条错误消息:“ TypeError:将圆形结构转换为JSON”。页面上的错误指向以下代码行:

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

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


问题答案:

不知道您使用的是哪个版本的API,但是我认为看一下API规范您的语法可能是错误的:

http://docs.mongodb.org/manual/reference/method/db.collection.find/

这是声明:

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

而且您肯定在滥用投影参数。像您那样传递回调似乎会在结果中返回 db 对象,这会在express的JSON序列化期间导致循环错误。

查找所有操作的正确代码应类似于:

collection.find({}).toArray(function(error, documents) {
    if (err) throw error;

    res.send(documents);
});


 类似资料:
  • 我想在文件目录上迭代此代码: 我目录中的图像: Film_Crew.jpg Film\u Crew副本。jpg公司 Film_Crew复制2.jpg Film\u Crew副本3。jpg公司 Film\u Crew副本4。jpg公司 Film\u Crew副本5。jpg公司 Film\u Crew副本6。jpg公司 我尝试使用此代码,因为上次尝试时它对我有效,但现在不起作用。 我在终端的Mac电脑

  • 问题内容: 我正在尝试将此for循环重写为for每个循环。 这就是我尝试过的 谁能指出我正确的方向?谢谢。 问题答案: 我认为您想得太多… :)

  • 我正在使用node.js的请求包 代码: 我在这里收到这个错误: TypeError:将圆形结构转换为JSON 有人能告诉我是什么问题吗?

  • 将循环转换为时遇到问题。 方法返回 我尝试过,但需要等待将转换为并且我无法添加它。 我正在尝试下载大约15个报告异步,以等待所有的已经下载,然后将它们合并成一个PDF。 注意:我使用的是框架4.8.3

  • 我有一个带JSON.stringify的tableDnD拖放: 我收到以下错误消息: 未捕获的类型错误:将圆形结构转换为JSON 我只有Chrome问题。

  • 我有以下代码: 这段代码的目的是将旧的丹麦等级转换成新的等级,但问题是当使用< code>convert13to7函数时,我没有得到任何输出。有人看到这里的问题了吗?