【发布时间】:2016-03-18 15:27:58
【问题描述】:
我已经设置了 node 和 mongodb 并将一些 yelp 数据导入到 mongo 中。当我使用 mongo shell 查询时,我可以看到有文档,一切都很好。但是,我无法通过将它们添加到数组并返回该数组来传递它们。当我打开 localhost:3000/api/reviews 时,我得到一个空白页。我的控制台确实记录了所有内容,因此 mongo 的节点驱动程序正在获取文档。有任何想法吗?我觉得这与节点的异步特性有关。
var express = require('express');
var router = express.Router();
var MongoClient = require('mongodb').MongoClient;
var assert = require('assert');
var url = 'mongodb://localhost:27017/YelpDB';
var getReviews = function(db, callback) {
var cursor = db.collection('reviews').find( );
//JSONArray jsonarray = new JSONArray();
var data = [];
cursor.each(function(err, doc) {
assert.equal(err, null);
if (doc != null) {
var jsonDoc = JSON.stringify(doc);
console.log(typeof jsonDoc);
data.push(jsonDoc);
} else {
callback();
}
});
return data;
};
router.get('/reviews/', function(req, res, next) {
//res.send('respond with a resource');
MongoClient.connect(url, function(err, db) {
assert.equal(null, err);
var data = getReviews(db, function() {
db.close();
});
res.json({"reviews": data});
});
});
【问题讨论】:
标签: node.js mongodb asynchronous