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

我使用node.js,express.js和mongodb创build了一个RESTful API。 我开始创build我的路线,从一个完美的MongoDB集合中提取文档。

示例集合文档

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

工程 – 它也适用,如果我做.find({查询}),而不是一般的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); }); }); }; 

但是当我尝试调用一个embedded式文档(即子文档)它使用dot.notation它打破。

* 不起作用 *

 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) 

任何人都可以帮我find解决方法,或者让我知道我的方法是否有任何错误。

谢谢!

你基本上做到了

 > var a = {a:1} undefined > ab = 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) 

在你的代码的某个地方,你正在创build一个自我引用的对象