Javascript 如何在节点express中检查请求正文是否为空?
下面是我的请求主体,它是从客户端发送的Javascript 如何在节点express中检查请求正文是否为空?,javascript,node.js,express,Javascript,Node.js,Express,下面是我的请求主体,它是从客户端发送的 var credentials = { "ConsumerData": { "ConsumerStoreId": "a", "ConsumerUserId": "a" }, "CustomerData": { "CustomerId": "2345678890" }, "ErnD": { "
var credentials = {
"ConsumerData": {
"ConsumerStoreId": "a",
"ConsumerUserId": "a"
},
"CustomerData": {
"CustomerId": "2345678890"
},
"ErnD": {
"UID": "3",
"TxnDt": "1"
},
"PurD": [{
"ItemCode": "3456tghw3",
"ItemEANCode": "223222122"
},
{
"ItemCode": "8jghw3865",
"ItemEANCode": "3334443222"
}
]
}
对于测试,我正在发送var凭证={}
空凭证
在服务器端控制器(node,express)中,我想检查req.body是否为空
if(!req.body)
{
console.log('Object missing');
}
if(!req.body.ConsumerData.ConsumerStoreId)
{
console.log('ConsumerStoreId missing');
}
if(!req.body.CustomerData.CustomerId)
{
console.log('CustomerId missing');
}
if(!req.body.ErnD.UID)
{
console.log('UID missing');
}
console.log('outside');
我正在检查所有内容,但它总是只在外部打印ES2015:
if (Object.keys(req.body).length === 0) {
// Do something
}
if(req.body.constructor === Object && Object.keys(req.body).length === 0) {
console.log('Object missing');
}
function isEmpty(obj) {
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
return false;
}
return JSON.stringify(obj) === JSON.stringify({});
}
if(isEmpty(req.body)) {
console.log('Object missing');
}
2015年前:
if(req.body.constructor === Object && Object.keys(req.body).length === 0) {
console.log('Object missing');
}
function isEmpty(obj) {
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
return false;
}
return JSON.stringify(obj) === JSON.stringify({});
}
if(isEmpty(req.body)) {
console.log('Object missing');
}
有关es2015之前风格的更多方法:使用
这是文件
检查值是否为空对象、集合、映射或集合
如果对象没有自己的可枚举字符串,则将其视为空
键控属性
类似数组的值,如参数对象、数组、缓冲区、字符串、,
或者类似jQuery的集合如果有长度,则被视为空集合
0。类似地,如果贴图和集具有
大小为0
当req.body为空时,它返回一个空对象,因此,生成
!请求正文
returnfalse
即使它是空的。相反,你应该测试一下!Object.keys(请求主体).length。它将从对象中取出每个键并计数,如果没有找到键,它将返回
0`。然后我们需要做的就是使用我们在空数组上使用的相同方法,测试!arr.length使接收一个布尔值成为可能,该布尔值表示它的完整性或不完整性
然后,我们以代码结束:
router.post('/auth/signup', function(req, res) {
if(!Object.keys(req.body).length) {
// is empty
} else if(!req.body.param1 || !req.body.param2 || !req.body.param3) {
let params = [req.body.param1, req.body.param2, req.body.param3];
let lackingParam = params.findIndex(param => !param === true) > 0 ? params.findIndex(param => !param === true) > 1 ? "req.body.param3" : "req.body.param2" : "req.body.param1";
// lacking only lackingParam
} else {
// not empty
}
});
如果(!req.body.ConsumerData.ConsumerStoreId){console.log('ConsumerStoreId missing');}@itsme您能解释一下吗?上面的代码是有效的,但是如果(!req.body.ConsumerData.ConsumerStoreId){console.log('ConsumerStoreId missing');}@itsme你想让我改成这个吗?我做了一些不起作用的事情thtas为什么你能帮我解决,这样它就能帮助我前进?你能真正地控制台.log(typeof req.body)并确保它不会返回未定义的数据吗?让数据={“ConsumerData”:{“ConsumerStoreId”:“a”,“ConsumerUserSerId”:“a”},“CustomerData”:{“CustomerId”:”},“ErnD”:{“UID”:“3”,“TxnDt”:“1”},“PurD”:[{“ItemCode”:“3456tghw3”,“ItemEANCode”:“223222122”},{“ItemCode”:“8jghw3865”,“ItemEANCode”:“3334443222”}]}console.log(Object.keys(data).length==0)//如果此代码可以回答问题,提供关于如何和/或为什么解决问题的额外信息将提高答案的长期价值。提到为什么这个答案比其他答案更合适也没什么坏处。