2017-07-20 68 views
0

我試圖建立一個RESTful Web服務下面這個教程: https://www.codementor.io/olatundegaruba/nodejs-restful-apis-in-10-minutes-q0sgsfhbd使用express和mongoose的Node.js restful webservice。路由不工作

它不工作回到我CAN NOT GET /報告錯誤... 我努力學習的node.js我無法找到任何地方的錯誤,我試過的所有東西都不起作用。

另外,當我打電話給服務器時,它到達打印「HEY」的index.js。這不是應該首先到達server.js嗎?

這裏是我的代碼:

Server.js

var express = require('express'), 
app = express(), 
port = process.env.PORT || 3000, 
mongoose = require('mongoose'), 
Report = require('./api/models/reportModel.js'), 
bodyParser = require('body-parser'); 

mongoose.Promise = global.Promise; 
mongoose.connect('mongodb://localhost/server'); 


app.use(bodyParser.urlencoded({ extended: true })); 
app.use(bodyParser.json()); 


var routes = require('./api/routes/reportRoute.js'); 
routes(app); 



app.listen(port); 


console.log('Report RESTful API server started on: ' + port); 

reportRoute.js

'use strict'; 
    module.exports = function(app) { 
    var reports = require('../controllers/reportController.js'); 


    // report Routes 
    app.route('/reports') 
    .get(reports.list_all_reports) 
    .post(reports.create_a_report); 


    app.route('/reports/:reportId').get(reports.read_a_report) 
    .put(reports.update_a_report) 
    .delete(reports.delete_a_report); 
}; 

reportController.js

'use strict'; 


var mongoose = require('mongoose'), 
    Report = mongoose.model('Reports'); 

exports.list_all_reports = function(req, res) { 
    Report.find({}, function(err, report) { 
    if (err) 
     res.send(err); 
    res.json(report); 
    }); 
}; 




exports.create_a_report = function(req, res) { 
    var new_report = new Report(req.body); 
    new_report.save(function(err, report) { 
    if (err) 
     res.send(err); 
    res.json(report); 
    }); 
}; 


exports.read_a_report = function(req, res) { 
    Report.findById(req.params.reportId, function(err, report) { 
    if (err) 
     res.send(err); 
    res.json(report); 
    }); 
}; 


exports.update_a_report = function(req, report) { 
    Report.findOneAndUpdate({_id: req.params.taskId}, req.body, { new: true }, function(err, report) { 
    if (err) 
     res.send(err); 
    res.json(report); 
    }); 
}; 


exports.delete_a_report = function(req, res) { 


    Report.remove({ 
    _id: req.params.reportId 
    }, function(err, report) { 
    if (err) 
     res.send(err); 
    res.json({ message: 'Report successfully deleted' }); 
    }); 
}; 

謝謝您的幫助.. 。

編輯:

index.js

const express = require('express'); 
const app = express(); 
var route = require('./api/routes/reportRoute'); 

app.get('/', function(req, res) { 
    res.send('HEY!'); 
}) 
app.listen(3000, function(){console.log('Server running on port 3000')}); 
+0

是你寫的所有代碼。我認爲你沒有正確連接路由器文件 –

+0

我的路由器缺少什麼? –

+0

只需在app.js中編輯即可。在'app.use(bodyParser.json());'add'app.get('/ test',function(req,res){res.jsonp({data:'hello'});})之後'然後嘗試localhost:port/test並告訴我們發生了什麼? –

回答

0

您還沒有發佈您的reportController.js但如果功能list_all_reports不設置響應的身體會出現此問題。例如,向處理函數添加

res.json({hello: "world"}); 

應使其工作。

+0

只是加了...謝謝你的回答。我的功能正在返回**報告** 但我的數據庫是空的,這可能是問題嗎? –

+0

你可以使用'res.json({hello:「world」})替換exports.list_all_reports函數嗎?''只是爲了做一個完整性檢查? – harshpatel991

+0

剛剛嘗試過,沒有工作...得到了相同的迴應:無法獲取/報告 –