Javascript 使用express和mongoose的Node.js restful Web服务。路由不工作
根据本教程,我正在尝试构建一个RESTful Web服务: 它无法向我返回一个无法获取/报告错误。。。 我正在尝试学习node.js,但我在任何地方都找不到错误,而且我尝试的一切都不起作用 另外,当我调用服务器时,它会到达index.js,它会打印一个“嘿”。这不是应该先到达server.js吗 这是我的密码: Server.jsJavascript 使用express和mongoose的Node.js restful Web服务。路由不工作,javascript,node.js,rest,api,express,Javascript,Node.js,Rest,Api,Express,根据本教程,我正在尝试构建一个RESTful Web服务: 它无法向我返回一个无法获取/报告错误。。。 我正在尝试学习node.js,但我在任何地方都找不到错误,而且我尝试的一切都不起作用 另外,当我调用服务器时,它会到达index.js,它会打印一个“嘿”。这不是应该先到达server.js吗 这是我的密码: Server.js var express = require('express'), app = express(), port = process.env.PORT || 3000
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')});
您尚未发布您的
reportController.js
,但如果函数列表\u all\u reports未设置响应主体,则会出现此问题。例如,添加
res.json({hello: "world"});
对处理程序函数的修改应该可以使其工作。是您编写的所有代码。我想你没有正确连接路由器文件我的路由器缺少什么?要使这变得简单,只需在app.js中编辑。在
app.use(bodyParser.json())之后
addapp.get('/test',function(req,res){res.jsonp({data:'hello'});})
。恐怕它没有到达server.js…我想你的服务器文件有问题。刚刚添加了它。。。谢谢你的回答。我的函数正在返回报告,但我的数据库是空的,这可能是问题所在吗?能否用res.json({hello:“world”})替换exports.list_all_reports函数代码>只是为了做一次精神检查?只是尝试了一下,没用。。。得到相同的响应:无法获取/报告