【发布时间】:2016-08-12 09:06:11
【问题描述】:
我是 Node 和 Express 的新手,所以到目前为止我的知识有限。我有一个使用 Node.js、Express 和 MongoDB 的设置。我正在尝试通过在我的主 .js 文件中执行以下操作来路由请求“localhost:3000/v1/user”:
MongoClient.connect(mongoUrl, function (err, db) {
if (err) {
console.log("Unable to connect to the mongoDB server. Error:", err);
} else {
//HURRAY!! We are connected. :)
console.log("Connection established to Mongo DB with connection string " + connection_string);
let port = process.env.NODE_PORT || 3000;
app.listen(port);
console.log('Server is now listening to port ' + port);
app.use(function(req, res){
req.db = db;
console.log("DB now available for all routes");
});
console.log("Using v1");
app.use('/v1', v1Route);
}
});
与 mongo 的连接建立正常。 我在两个单独的文件中有两个路由器,如下所示:
v1路线:
var express = require('express')
var router = express.Router();
const userRoute = require('./userRoute');
router.use('/user', userRoute);
module.exports = router;
用户路由:
const express = require('express');
var router = express.Router();
router.get('/', function(req,res){
console.log('fetching all users');
var collection = req.db.collection('user');
collection.find().toArray(function (err, result) {
if (err) {
console.log(err);
} else if (result.length > 0) {
console.log('Found entry');
res.status(200).send('Found:' + result[0].firstName + ' ' + result[0].lastName).end();
} else {
console.log('No document(s) found with defined "find" criteria!');
res.status(200).send('No document(s) found with defined "find" criteria!').end();
}
})
});
module.exports = router;
问题是当我尝试发出请求“localhost:3000/v1/user”时没有任何反应。我没有收到错误,只是浏览器停止了。当我发送请求时,我得到日志字符串“DB 现在可用于所有路由”。
【问题讨论】:
-
在监听端口之前可以先调用
app.use吗? -
我试过了,但没有帮助
标签: node.js mongodb rest express