Node.js API express web服务器MongoDB

Node.js API express web服务器MongoDB,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我正在使用express web server和mongoDB作为DB服务器编写Node.js REST API。 项目的目录树如下所示: 当我尝试访问“/new/test”路由时,出现错误“Cannot GET/new/test”。通过访问此路径,它应该基于“firstname”URL参数在数据库中创建一个新条目 Routes.js: 'use strict'; module.exports = function(app) { var americaine = require('../c

我正在使用express web server和mongoDB作为DB服务器编写Node.js REST API。 项目的目录树如下所示:

当我尝试访问“/new/test”路由时,出现错误“Cannot GET/new/test”。通过访问此路径,它应该基于“firstname”URL参数在数据库中创建一个新条目

Routes.js:

'use strict';
module.exports = function(app) {
  var americaine = require('../controllers/americaineController');

  // Firstname Routes  
  app.route('/new/:firstname')
    .post(americaine.new_firstname);   


};
DB条目创建功能位于Controller.js上:

'use strict';

var mongoose = require('mongoose'),

  Firstname = mongoose.model('Firstname');

  exports.new_firstname = function(req, res) {
    var new_firstname = Firstname(req.params.firstname);
    new_firstname.save(function(err, firstname) {
      if (err)
        res.send(err);
      res.json(firstname);
    });
  };
Model.js:

'use strict';
var mongoose = require('mongoose');
var Schema = mongoose.Schema;


var FirstNameSchema = new Schema({
  /*id: {
      type: Number,
      required: false
  },*/
  name: {
    type: String,
    required: true
  }
});

module.exports = mongoose.model('Firstname', FirstNameSchema);
你们对我的问题有什么想法吗?提前谢谢

Jérémy

将方法.post()更改为.get()


因为您实际上是在执行get请求而不是post请求。

您无法获取它,因为它被定义为post
app.route('/new/:firstname')。post(americaine.new_firstname)
'/new/:firstname'路由使用一个用于创建DB条目的参数。据英国《每日邮报》报道,提供数据需要交付后的功能。你真的不应该去“创造”一些东西。所以,让我们考虑一下“请求”中的错误,而不是方法。为什么我们不应该这么做?当然是因为。GET不是“创建”动词。意思是“找回”某物。要“创建”东西,您可以根据实际的底层操作使用POST或PUT。我还考虑了RESTAPI标准/new/:firstname'路由接受一个转发参数以创建新的DB条目。因此,根据RESTAPI标准,每个POST函数都应该用于提供数据。