我刚开始使用express,node和mongoDB,我似乎遇到了在node / express中从mongo获取数据的问题。
我有一个名为testdb
的数据库,其中有一个集合调用tests
,这里是tests
的输出
{
"_id" : ObjectId("5395f91ced382cec1f8d70f1"),
"name" : "CHATEAU DE SAINT COSME",
"year" : "2009",
"grapes" : "Grenache / Syrah",
"country" : "France",
"region" : "Southern Rhone",
"description" : "The aromas of fruit and spice...",
"picture" : "saint_cosme.jpg"
}
{
"_id" : ObjectId("5395f91ced382cec1f8d70f2"),
"name" : "LAN RIOJA CRIANZA",
"year" : "2006",
"grapes" : "Tempranillo",
"country" : "Spain",
"region" : "Rioja",
"description" : "A resurgence of interest in boutique vineyards...",
"picture" : "lan_rioja.jpg"
}
在routes \ index.js中我有这个
var express = require('express');
var router = express.Router();
var mongo = require('mongodb');
var db = new mongo.Db('testdb', new mongo.Server('localhost',27017),{auto_reconnect:true,safe:false});
var testData = db.collection('tests');
/* GET home page. */
router.get('/', function(req, res) {
testData.find().toArray(function(e,doc){
if(e){
throw e;
}
console.log(doc);
});
res.render('index', { title: 'Express' ,docs:"is jade cool?"});
});
module.exports = router;
因为它似乎没有调用回调回调(没有执行console.log并且没有抛出错误)。
如果我将res.render
放在toArray回调中,我的应用程序会在浏览器中挂起。
因为这是我的第一个快递应用程序,我确定我犯了一个noob错误。 我知道toArray是异步的,但它应该最终被调用(并且终端中应该显示控制台日志或错误) 有谁知道为什么Array不工作?