/** * check Object * @param {string} key key name * @param {string} type type name * @param {boolean} empty can empty */ const chkObject = function (key = '', type = '', empty = false) { const uuidChk = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i if (!(key in this.body)) return false switch (type) { case 'string': if (typeof this.body[key] !== 'string' || (!empty && !this.body[key])) return false break case 'number': if (!isFinite(this.body[key])) return false break case 'boolean': if (typeof this.body[key] !== 'boolean') return false break case 'array': if (!Array.isArray(this.body[key]) || (!empty && this.body[key].length === 0)) return false break case 'uuid': if (typeof this.body[key] !== 'string') return false if (!empty && this.body[key] === '') return false if (!empty && !uuidChk.test(this.body[key])) return false break case 'object': if (typeof this.body[key] !== 'object') return false try { let str = JSON.stringify(this.body[key]) JSON.parse(str) } catch (err) { return false } break default: return false } return true } module.exports = { chkObject }