【发布时间】:2017-09-20 15:15:46
【问题描述】:
我正在使用 Mongoose 使用 NodeJs 构建 REST API,并且遇到了 req 参数的问题。
我使用的代码(模型)如下:
'use strict';
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var RequestSchema = new Schema({
query: {
type: String,
default: ''
},
number: {
type: String,
default: ''
},
subject: {
type: String,
default: ''
}
});
module.exports = mongoose.model('Cel', RequestSchema)
但是,当我使用控制器中的以下代码(answerQuery 用于 POST 请求)并打印出我发现意外值的值时:
exports.answerQuery = function(req, res) {
console.log('query is : ' + req.params.query); // this is undefined
console.log('query is : ' + req.body.query); // this is the value of query
console.log('query is: ' + req.params.number); // this is the value of number
console.log('subject is : ' + req.params.subject); // this is undefined
};
我理解为什么 req.body.query 有效,但我对为什么 req.params.query 和 req.params.subject 不起作用(返回未定义)但 req.params.number 起作用感到困惑。我没有经常使用 Javascript,并认为我可能在这里遗漏了一些东西。
编辑 0:我正在为此使用 POST 请求
编辑 1:这是我的路线文件:
'use strict';
module.exports = function(app) {
var celRequest = require('../controllers/celSearchController');
// Routes
app.route('/celsearch/:number')
.post(celRequest.answerQuery);
};
【问题讨论】:
-
是否有与您的 answerQuery 路由相关联的 url?如果是的话,你能把它包括进去吗?
-
如果 answerQuery 是您的 POST 请求,那么您将在 req.body 中获取数据,而不是在 req.query 中。 req.query 或 req.params 用于 GET 请求
-
你能显示 POST 请求的 url 以及参数及其值吗?
-
@UditKumawat 这很有意义,因为我使用的是 POST 请求。我将编辑问题以反映这一点。您能否继续回答,以便我将其标记为正确答案。还有为什么 req.params.number 会起作用,而其他的却不会呢?谢谢!
-
您应该发布调用
answerQuery的路由处理程序,它可能会解释为什么会发生这种情况。
标签: javascript node.js express mongoose mongoose-schema