为什么在一个路由中未定义请求体?

Why is request body undefined in one route?

我在尝试使用 nodeJS 和 express 建立 REST API 时遇到了一些麻烦。下面的代码定义了两条路由,"stores" 和 "user".

令人惊讶的是,到“/user”的路由运行良好,但是当请求到达“/stores”时,请求正文似乎未定义。我已经搜索了解决方案,但似乎没有任何效果。

两个控制器具有相同的结构。

我做错了什么?

var express = require("express"),
app = express(),
bodyParser = require("body-parser"),
methodOverride = require("method-override"),
mongoose = require('mongoose');


// Connection to DB
mongoose.connect('mongodb://localhost/appDB', function(err, res) {
if(err) throw err;
console.log('Connected to Database');
});


// Middlewares
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(methodOverride());

//Import models and controllers
var userModel=require("./models/user.js")(app,mongoose);
var storeModel=require("./models/store.js")(app,mongoose);
var usersController=require("./controllers/users.js");
var storesController=require("./controllers/stores.js");

//Router options
var router=express.Router();



router.route('/stores')
.get(storesController.getNearestStores);

router.route('/user')
.post(usersController.addUser);

app.use(router);


//Start server
app.listen(3000, function() {
console.log("Node server running on http://localhost:3000");
});

非常感谢。

P.S.:第一次用nodejs和express(甚至mongo)

这给了我解决方案,get 请求在 HTTP 标准下不接受参数。

这是因为在 http 标准中 GET 请求上没有 body。只有 POSTPUT.

你想做的是使用 query string

get
/stores?location=mystore

通过这种方式,您可以在回调中访问 req.query

req.query
{
    location: 'mystore'
}