Search code examples
javascriptangularjsnode.jshasownproperty

How to check chain of hasOwnProperty in objects


I have json like this

var a = {
    "name": "test1",
    "redisData": {
        "redisIp": "127.0.0.1",
        "dbSetting": {
            "dbIp": "127.0.0.1",
            "dbUserName": "root",
            "dbUserPassword": "root",
        },
        "otherData":{
            "email":"a@gmail.com"
        }
    }
}

So i have to push this data in database when all the data present in all key for that purpose i have to validate that data like this

if (a.hasOwnProperty("redisData")) {
    if (a.redisData.hasOwnProperty("dbSetting")) {
        if (a.redisData.dbSetting.hasOwnProperty("dbIp")) {
            if (a.redisData.dbSetting.dbIp) {
                // now insert in to database
            } else {
                alert('DB server Ip missing');
            }
        } else {
            alert('DB server Ip missing');
        }
    } else {
        alert('DB server Ip missing');
    }
} else {
    alert('DB server Ip missing');
}

But this code looks ugly. Do we have better way to avoid multiple if condition and chaining of hasownproperty.


Solution

  • Simple: Just check if the values exist and have a truthy value:

    if (a.redisData && a.redisData.dbSetting && a.redisData.dbSetting.dbIp) {
        // now insert in to database
    } else {
        alert('DB server Ip missing');
    }
    

    There is no real advantage in using hasOwnProperty here.