2015-06-19 3 views
1

Я новичок в стеке MEAN. Я пытаюсь получить список документов от MongoDB. Я использовал версию сообщества Visual Studio 2013 для создания базового приложения Nodejs Express. Visual Studio создала файл app.js в корне для конфигурации. Я поставил следующий код в app.js, которая имеет отношение к MongoDB:MongoDB и Express: Тип Ошибка: преобразование круговой структуры в JSON

var mongo = require('myDB'); 
var db = new mongo.Db("myDB", new mongo.Server("localhost", "27017"), 
{ safe: true }, { auto_reconnect: true }); 

// Make our db accessible to our router 
app.use(function (req, res, next) { 
    req.db = db; 
    next(); 
}); 

В маршрутах папку, что Visual Studio создал, я создал JS файл, который будет выполнять операции CRUD. У меня следующий код в этом файле:

var express = require('express'); 
var router = express.Router(); 
router.get('/myRecords', function (req, res) { 
    var db = req.db; 
    db.open(function (err, db) { 
     if (err) 
      console.log(err); 
     else {   
       var collection = db.collection('myCollection');     
       var dataToSend = collection.find(); 
       res.send(dataToSend);    
     } 
     })  
    }); 
module.exports = router; 

Я Тип ошибки: Преобразование Circular структуры в формате JSON.

Я пытаюсь не использовать какую-либо схему.

Прошу совета.

+2

'collection.find()' не возвращает результаты. Ознакомьтесь с некоторыми руководствами по его использованию. –

+0

спасибо, есть ли у вас ссылка на учебник, который не использует какую-либо схему (мангуст или любую другую) для использования стека MEAN? Я пробовал несколько дней, но не смог найти. – learner

ответ

7

Для тех из вас, кто сталкивается с подобной проблемой, find() не возвращает документ, нам нужно использовать toArray для извлечения документов. Следующий код сделал трюк:

router.get('/myRecords', function (req, res) { 
    var db = req.db; 
    db.open(function (err, db) { // <------everything wrapped inside this function 
     db.collection('myCollection', function (err, collection) { 
      collection.find().toArray(function (err, items) { 
       res.send(items); 
       db.close(); 
      }); 
     }); 
    }); 
}); 
+0

Есть ли способ вернуть его как JSON после этого? – 221b