为了在我的MongoDB数据库中创建一个新的记录,我需要检查是否定义了接收到的JSON消息的所有字段(null、"“、{}等)。我怎样才能以一种简单、快速(通用)的方式做到这一点呢?
数据库模型:
var measurementSchema = {
"initStamp": Date,
"modStamp": Date,
"protocol": Number,
"engine": {
"amp": Number,
"volt": Number,
"temp": Number,
"pcbTemp": Number,
"rpm": Number
},
"bms": {
"amp": Number,
"volt": Number,
"percent": Number,
"ampHours": Number,
"health": Number,
"temp": Number,
"lowVolt": Number,
"highVolt": Number,
"avgVolt": Number
},
"mppt": [ {
"id": Number,
"batteryFull": Boolean,
"overheat": Boolean,
"noCharge": Boolean,
"lowVolt": Boolean,
"volt": Number,
"amps": Number,
"batteryVolt": Number,
"envTemp": Number
} ],
"gps": {
"gpsQuality": Number,
"gpsTime": Date,
"satellitesUsed": Number,
"latitude": Number,
"nsIndicator": String,
"longitude": Number,
"ewIndicator": String,
"speed": Number,
"accuracy": Number,
"vector": {
"x": Number,
"y": Number,
"z": Number
}
}
};发布于 2016-06-06 18:36:08
试试这样的东西!
function isJSONValid(obj) {
for (var key in obj) {
if (obj[key] !== null && obj[key] !== undefined) {
if (typeof obj[key] === "object") {
if (Object.keys(obj[key]).length === 0) {
return false; //invalid
}
}
if (Array.isArray(obj[key])) {
if (obj[key].length === 0) {
return false; //invalid
}
}
if (!isJSONValid(obj)) {
return isJSONValid(obj);
}
} else {
return false; //invalid
}
}
return true; //valid
};
var canICreateNewRecords = isJSONValid(measurementSchema);编辑:最好回答你的具体情况。
编辑2:在遇到数组的情况下,不要使用typeof。
发布于 2016-06-06 18:44:26
检查空字符串或空数组/对象的一种快速简单的方法是对JSON进行字符串化,并检查null、""和{}或[]的值。
var measurementSchema = {
"initStamp": null,
"engine": {
"amp": "",
},
"mppt": [{}]
};
/""|null|\{\}|\[\]/g.test(JSON.stringify(measurementSchema)) //=> true - a property is not definedhttps://stackoverflow.com/questions/37663170
复制相似问题