gpt4 book ai didi

node.js - 使用 Node.js 和 Express.js 检索 MongoDB 子文档

转载 作者:可可西里 更新时间:2023-11-01 10:44:20 26 4
gpt4 key购买 nike

我使用 node.js、express.js 和 mongodb 创建了一个 RESTful API。我开始通过从运行良好的 MongoDB 集合中提取文档来创建我的路由。

示例集合文档

{ 
"_id" : ObjectId("51ace8c04cc8ea865df0923e"),
"title" : "Some Example Title",
"producer" :
{
"company" : "Your Company Name"
}
}

有效 - 如果我执行 .find({query}) 而不是通用的 find(),它也有效

   app.get('/something', something.findAll);
exports.findAll = function(req, res) {
db.collection('something', function(err, collection) {
collection.find().toArray(function(err, items) {
res.contentType('json');
res.header("Access-Control-Allow-Origin", "*");
res.header('Access-Control-Allow-Methods', 'GET, PUT');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
res.send(items);
});
});
};

但是,当我尝试使用点符号调用嵌入文档(即子文档)时,它会中断。

*不起作用*

db.something.find( { 'producer.company': 'ABC123' } )

或者即使我尝试

db.something.find( {producer: {company: 'ABC123'} } );

我收到一条错误消息。

TypeError: Converting circular structure to JSON
at Object.stringify (native)
at ServerResponse.res.json (../lib/response.js:185:19)
at ServerResponse.res.send (..//lib/response.js:117:21)
at ../routes/recipes.js:81:8
at Collection.find (../node_modules/mongodb/lib/mongodb/collection.js:931:5)
at ../routes/recipes.js:73:14
at Db.collection (../lib/mongodb/db.js:462:44)
at exports.findByCat (../routes/recipes.js:72:5)
at callbacks (../node_modules/express/lib/router/index.js:161:37)
at param (../node_modules/express/lib/router/index.js:135:11)

谁能帮我找到解决方法,或者让我知道我的方法是否有任何错误。

谢谢!

最佳答案

你基本上做到了这一点

> var a = {a:1}
undefined
> a.b = a
{ a: 1, b: [Circular] }
> JSON.stringify(a)
TypeError: Converting circular structure to JSON
at Object.stringify (native)
at repl:1:7
at REPLServer.self.eval (repl.js:110:21)
at Interface.<anonymous> (repl.js:239:12)
at Interface.EventEmitter.emit (events.js:95:17)
at Interface._onLine (readline.js:202:10)
at Interface._line (readline.js:531:8)
at Interface._ttyWrite (readline.js:760:14)
at ReadStream.onkeypress (readline.js:99:10)
at ReadStream.EventEmitter.emit (events.js:98:17)

您在代码中的某处创建了一个自引用对象

关于node.js - 使用 Node.js 和 Express.js 检索 MongoDB 子文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16923607/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com