Я создал RESTful API, используя node.js, express.js и mongodb. Я начал создавать свои маршруты, потянув документы из коллекции MongoDB, которые отлично работают.Получение субдокументов MongoDB с помощью Node.js и Express.js
Пример сбор документы
{
"_id" : ObjectId("51ace8c04cc8ea865df0923e"),
"title" : "Some Example Title",
"producer" :
{
"company" : "Your Company Name"
}
}
Работа - и это также работает, если я делаю .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);
});
});
};
Но когда я пытаюсь вызвать встроенный документ (т. е. поддокумент), он использует 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)
Может ли кто-нибудь помочь мне найти обходной путь или сообщить мне, есть ли какие-либо ошибки в моем подходе.
Спасибо!
Можете ли вы описать, что в коллекции? В противном случае я не могу предоставить вам больше информации, которую вы можете получить из этого сообщения об ошибке. –
Это говорит о том, что сериализатор json запущен в круглый аргумент – christkv