2016-08-12 19 views
0

私はノードとExpressを初めて使用しているので、これまでの知識は限られています。 Node.js、Express、MongoDBの設定があります。私のメインの.jsファイルに次のように実行して:「3000/V1 /ユーザーlocalhost」を:私は、ルートへの要求をしようとしています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); 
     } 
     }); 

モンゴへの接続がOK確立します。私はこのような二つの別々のファイルに2台のルータを持っている :

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; 

問題は、私は、要求を作るしようとすると、何も起こらないということである「はlocalhost: 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

私はそれを試みたが、それは助けなかった –

関連する問題