Node.js使用express和mongoose进行restful webservice。路由不工作

时间:2017-07-20 03:38:05

标签: javascript node.js rest api express

我正在尝试按照本教程构建RESTful Web服务: https://www.codementor.io/olatundegaruba/nodejs-restful-apis-in-10-minutes-q0sgsfhbd

它没有工作给我一个无法获取/报告错误... 我试图学习node.js,我无法在任何地方找到错误,我尝试的所有内容都无法正常工作。

此外,当我调用服务器时,它会到达index.js,它会打印一个" HEY"。这不应该首先到达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')});

1 个答案:

答案 0 :(得分:0)

您尚未发布reportController.js但如果函数list_all_reports未设置响应正文,则会出现此问题。例如,添加

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

到处理函数应该使它工作。