Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 完成中间件文件,以便验证所有查询参数,并且null和未定义的值抛出错误消息_Node.js_Express - Fatal编程技术网

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 {
...
}