2017-07-20 63 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

刚刚尝试过,没有工作...得到了相同的回应:无法获取/报告 –