2016-08-12 5 views
0

Node와 Express를 처음 사용하므로 지금까지 지식이 제한적입니다. Node.js, Express 및 MongoDB가있는 설치가 있습니다. 내 주요의 .js 파일에서 다음과 같이 수행하여 "3000/V1/사용자 로컬 호스트"나는 경로로 요청을 시도하고Node.js Express가 응답하지 않는 REST

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); 
     } 
     }); 

몽고와의 연결이 확인 설립됩니다. 나는이 같은 두 개의 파일에 두 개의 라우터가 :

v1Route :

var express = require('express') 
var router = express.Router(); 

const userRoute = require('./userRoute'); 

router.use('/user', userRoute); 

module.exports = router; 

userRoute :

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; 

문제는 내가 요청을 만들려고 할 때 아무 변화가 없다는 것입니다 "로컬 호스트 : 3000/v1/user "입니다. 오류가 없으며 브라우저가 멈 춥니 다. 요청을 보내면 "모든 경로에 대해 DB를 사용할 수 있습니다"라는 로그 문자열이 생깁니다.

+0

을 포트에서 수신하기 전에'app.use'를 호출 할 수 있습니까? –

+0

나는 그것을 시도했지만 도움이되지 않았다 –

답변

2

당신이 next 처리기를 호출하지 않는, 그래서 다음 미들웨어는 실행되지 않습니다 :

app.use(function(req, res, next) { 
    req.db = db; 
    console.log("DB now available for all routes"); 
    next(); 
}); 

당신은 공식 express 웹 사이트에 쓰기 미들웨어에 대한 자세한 문서를 확인할 수 있습니다 http://expressjs.com/en/guide/writing-middleware.html

+0

고맙다. –

0

app.use ('/ v1', v1Route) 다음에 서버를 실행해야합니다. 미들웨어 기능에서

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); 

      app.use(function(req, res){ 
      req.db = db; 
      console.log("DB now available for all routes"); 
      }); 


      console.log("Using v1"); 
      app.use('/v1', v1Route); 

      let port = process.env.NODE_PORT || 3000; 
      app.listen(port); 
      console.log('Server is now listening to port ' + port); 
     } 
     }); 
+0

나는 그것을 시도했지만 도움이되지 않았다. –

관련 문제