Node.js 完成中间件文件,以便验证所有查询参数,并且null和未定义的值抛出错误消息
同时传递名称和年龄参数时输出。Node.js 完成中间件文件,以便验证所有查询参数,并且null和未定义的值抛出错误消息,node.js,express,Node.js,Express,同时传递名称和年龄参数时输出。 创建api的问题说明: 在给定的应用程序中完成中间件文件和index.js文件,以便验证路由所需的所有查询参数,并且null和未定义的值会抛出错误消息- 必须使用的查询参数是-name:String,age:Number 创建一个名为“/query”的路由,并在请求此路由时按上述说明发送响应。 据我所知,api应包括以下条件以获得所需的输出: 1.当两个查询参数都存在时,响应成功(状态:200) 2.当输入年龄查询参数且名称参数为空时,响应失败(状态:403) 3
创建api的问题说明: 在给定的应用程序中完成中间件文件和index.js文件,以便验证路由所需的所有查询参数,并且null和未定义的值会抛出错误消息- 必须使用的查询参数是-name:String,age:Number 创建一个名为“/query”的路由,并在请求此路由时按上述说明发送响应。 据我所知,api应包括以下条件以获得所需的输出: 1.当两个查询参数都存在时,响应成功(状态:200) 2.当输入年龄查询参数且名称参数为空时,响应失败(状态:403) 3.当输入名称查询参数且年龄参数为空时,响应失败(状态:403) 当“eg:”的一个查询参数为null时: 但是,预期的产出应该有所提高 错误:正确, 现状:403 这是我面临的错误 有两个文件。一个是index.js文件,另一个是checkQueryParameters.js文件。(这是一个中间件) index.js的代码
const express = require('express');
const app = express();
const middleware = require('./middleware/checkQueryParameter');
app.get('/query',middleware.checkQueryParameters,(req,res)=>{
res.end();
});
app.listen(3000,()=>console.log('Example app listening on point
3000'));
module.exports = app;
checkQueryParameters.js的代码
let checkQueryParameters = (req,res,next)=>{
let name = req.query.name;
let age = req.query.age;
console.log(typeof(age));
console.log(typeof(name))
console.log(age);
console.log(name);
if(typeof name == undefined || name == null){
let result ={
error : true,
status : 403,
userMessage : 'some parameters missing',
data : 'name'
}
res.send(result);
}
else if(typeof age == undefined || age == null){
let result ={
error : true,
status : 403,
userMessage : 'all parameters missing',
data : 'age'
}
res.send(result);
}
else{
let result ={
error : false,
status : 200,
userMessage : 'all parameters entered',
data :{
'name' : name,
'age' : age
}
}
res.send(result);
}
}
module.exports = {
checkQueryParameters:checkQueryParameters
}
我认为您的问题是一个空字符串。
如果
?age=2&name
,如果您console.log(req.query.name)
您可能会看到名称
不是空
,不是未定义
。它是一个空字符串“”。如果要将该案例作为错误进行检查,则还应检查空字符串
if(typeof name == undefined || name == null || name === ''){
...
或
还有一点是关于中间件逻辑的其余部分。在检查年龄参数的if else
块中,发送一条消息“all parameters missing”。这是错误的name
并没有丢失,执行年龄验证的事实意味着第一个if块并没有执行,所以name参数非常有效。你应该这样处理:
if(typeof name == undefined || name == null || name === ''){
let result = {
error : true,
status : 403,
userMessage : 'name parameter is missing',
data : 'name'
}
...
} else if(typeof age == undefined || age == null || age === ''){
let result = {
error : true,
status : 403,
userMessage : 'age parameter is missing',
data : 'age'
}
...
}
else {
...
}
我认为您的问题是一个空字符串。
如果
?age=2&name
,如果您console.log(req.query.name)
您可能会看到名称
不是空
,不是未定义
。它是一个空字符串“”。如果要将该案例作为错误进行检查,则还应检查空字符串
if(typeof name == undefined || name == null || name === ''){
...
或
还有一点是关于中间件逻辑的其余部分。在检查年龄参数的if else
块中,发送一条消息“all parameters missing”。这是错误的name
并没有丢失,执行年龄验证的事实意味着第一个if块并没有执行,所以name参数非常有效。你应该这样处理:
if(typeof name == undefined || name == null || name === ''){
let result = {
error : true,
status : 403,
userMessage : 'name parameter is missing',
data : 'name'
}
...
} else if(typeof age == undefined || age == null || age === ''){
let result = {
error : true,
status : 403,
userMessage : 'age parameter is missing',
data : 'age'
}
...
}
else {
...
}