检查express.js中Param是否为空

时间:2018-03-14 16:15:11

标签: javascript node.js express

我想创建一个表并在其上放置所有param,这些param在param中都不是空的

http://localhost:5002/5u3k0HRYqYEyToBB53m1=Test2@test.fr&m2=test3@test.com&m3=&m4=&m5=&m6=&m7=&m8=&m9=test6@test.com&m10=&m11=test10@test.com&m12=&m13=&m14=&m15=&m16=&m17=&m18=&m19=&v=4.1.2&hw=6

在此之后我想将所有电子邮件(m1,m2,m9,m11)存储在一个表格中。

console.log(b) // test2@test.fr , test3@test.com , test10@test.com , test6@test.com

所以我这样做了

    let emailTable = [req.query.m0,req.query.m1,req.query.m2......]
Box.push({Email:emailTable}}
console.log(Box)// it show me even the empty param, i want only the full one 

2 个答案:

答案 0 :(得分:0)

这是解决问题的简单方法 JSFIDLE:https://jsfiddle.net/85bzj3a3/7/

// Lets imagine this object is your req.param
reqParam = {
  m1: 'email1',
  m2: '',
  m3: 'email3',
  m4: 'email4',
  someOther1: 'some other param',
  m5: '',
  m61: 'email6',
  someOther: 'otherValue'
}

const  emailTable = []
for (let key of Object.keys(reqParam)){
    // check if it is email and if it has value
  if(key.match(/^[m]+[0-9]*$/g) != null && reqParam[key] != ''){
    emailTable.push(reqParam[key])
  } 
}
console.log(emailTable)

我做了什么,是通过参数,检查它是否是使用正则表达式的电子邮件参数,然后检查它是否有值,如果有,请将其推送到emailTable。

我不认为在推送到阵列时硬编码所有参数是明智的,因为下次在url中添加另一个参数时,你必须在你的函数中再次硬编码,这不是bueno。

答案 1 :(得分:0)

这是我解决问题的方法。我使用lodash使事情更容易阅读。这个问题的原生实现应该很容易理解。我的index.js文件包含非常简单Express服务器,可以将查询字符串参数打印到控制台。如果您还有疑问,请与我联系。

// Request URL: http://localhost/?&m1=Has%20value&m2=&m3=&m4=test@mail.com

const express = require('express');
const app = express();
const _ = require('lodash');

app.get('/', (req, res) => {

    const params = _.values(req.query);

    console.log(params); // [ 'Has value', '', '', 'test@mail.com' ]

    const withValues = _.filter(params, p => !!p);

    console.log(withValues); // [ 'Has value', 'test@mail.com' ]

    res.sendStatus(200);

});

app.listen(80);