我想创建一个表并在其上放置所有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
答案 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);