创建符合request.body的JSON对象

时间:2017-05-15 14:46:41

标签: javascript json object express

使用NodeJs + Express创建REST API。一切运作良好,但我无法理解如何遍历request.body并检查其undefinedempty值的字段,并仅为有效数据分配新对​​象。 />

request.body 看起来像:

{ 
  key: 'value',  
  otherKey: 'otherValue',
  oneMoreKey: '',
  oneMoreKey2: undefined,
  oneMoreKey3: null
}

在那一端,我的对象看起来像是:

let contactData = Object.assign({},{
        'key': 'value',
        'otherKey': 'otherValue'
    })

寻找您的建议和帮助

2 个答案:

答案 0 :(得分:4)

的JavaScript

function getCleanObject(oldObject) {
    var newObject = {};
    for (var property in oldObject) {
        var value = oldObject[property];
        if (value) newObject[property] = value;
    }
}

说明

您可以先创建一个新的干净Object

var newObject = {}; // same as new Object();

然后使用for loop迭代所有对象的属性。

for (var property in oldObject)

然后获取该属性的值

var value = oldObject[property];

如果值为Troothy,请将该属性添加到新Object

 if (value) newObject[property] = value;

请注意,这样false值将被拒绝。要允许将其复制到新Object,您应将if语句替换为

if(value || value === false)

此外,如果您复制的Object inherits也来自其他Object,那么它可能会有额外的属性,如果您不希望它们被包含在内您应该将if语句更改为

if(value && oldObject.hasOwnProperty(value))

并且请记住for(var item in object)!= for(var item of list)

in用于迭代对象的属性,而of用于迭代iteratable(即列表)。此外,所有浏览器均支持inof不支持internet explorer

答案 1 :(得分:0)

your_object = {
       key: request.body[key] || 'default',
       otherKey: request.body[otherKey] || 'default',
       oneMoreKey: request.body[oneMoreKey] || 'default'
       ...
}

关于或(||)如何工作的解释JavaScript OR (||) variable assignment explanation