3

我是 MEAN 堆栈的新手。我正在尝试从 MongoDB 中检索文档列表。我使用 Visual Studio 2013 社区版创建了一个基本的 Nodejs Express 应用程序。Visual Studio 在根目录上创建了 app.js 文件以进行配置。我在与 mongodb 相关的 app.js 中放入了以下代码:

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 创建的 routes 文件夹中,我创建了一个执行 CRUD 操作的 js 文件。我在这个文件中有以下代码:

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;

我是类型错误:将循环结构转换为 JSON。

我试图不使用任何架构。

请指教。

4

1 回答 1

11

对于那些遇到类似问题的人,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();
            });
        });
    });
});
于 2015-06-19T19:51:22.243 回答