我尝试使用nodeJS和express来建立REST API时遇到了一些麻烦。以下代码定义了两个路由," stores"和"用户"。
令人惊讶的是,通往" / 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)
答案 0 :(得分:1)
这是因为http标准中的body
请求中没有GET
。仅限POST
和PUT
。
您要做的是使用query string
get
/stores?location=mystore
这样你的回调就可以访问req.query
req.query
{
location: 'mystore'
}
答案 1 :(得分:0)
这给了我解决方案,get请求不接受HTTP标准下的参数。