如何在节点中检查req.body是否为空,表示?

时间:2017-03-21 08:25:43

标签: javascript node.js express

以下是我的请求正文,它是从客户端发送的

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 credentials = {}空凭据

在服务器端控制器(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'); 

我正在检查所有内容,但仅在外面打印

3 个答案:

答案 0 :(得分:8)

<强> ES2015:

if(req.body.constructor === Object && Object.keys(req.body).length === 0) {
  console.log('Object missing');
}

PRE ES2015:

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');
}

了解 pre es2015 风格的更多方式:https://coderwall.com/p/_g3x9q/how-to-check-if-javascript-object-is-empty

答案 1 :(得分:3)

if (Object.keys(req.body).length === 0) {
   // Do something
}

答案 2 :(得分:0)

使用lodash.isempty

const isEmpty = require('lodash.isempty');

if(isEmpty(req.body)) {
    console.log('Empty Object');
}

以下是文档https://lodash.com/docs/4.17.11#isEmpty

  

检查value是否为空对象,集合,地图或集合。

     

如果对象没有自己的可枚举字符串,则认为它们为空   键控属性。

     

类似数组的值,例如参数对象,数组,缓冲区,字符串,   或类似jQuery的集合,如果它们的长度是空的   的0。类似地,如果映射和集合具有一个   大小为0。