mongo-schema-genrator
Version:
An module to convert normal JS object to Mongo Schema
24 lines (18 loc) • 1.2 kB
JavaScript
function getType(thing, _default, key, options = {}) {
let req = options.required || [];
let unq = options.unique || [];
let _t = typeof (thing), doo = false;
let defaults = {
Boolean: thing,
Number: parseInt(thing) || 0,
String: "'" + thing + "'" || "''",
Array: thing || "[]",
Object: thing || "{}",
}
if (!req.some(v => v === key) && !unq.some(v => v === key)) doo = true;
let type = _t === "boolean" ? "Boolean" : _t === "number" ? "Number" : _t === "symbol" ? "String" : _t === "string" ? "String" : _t === "object" ? "Object" : undefined;
if (_default && ((type === "object" && Object.keys(thing).length === 0) || type !== "Object")) type = `{ type: ${type}${doo ? `,default:${defaults[type]}` : ""}${req.some(v => v === key) ? ", required: true" : ""} ${unq.some(v => v === key) ? ", unqiue: true" : ""} }`;
else if(!_default && ((type === "object" && Object.keys(thing).length === 0) || type !== "Object"))type = `{ type: ${type}${req.some(v => v === key) ? ", required: true" : ""} ${unq.some(v => v === key) ? ", unqiue: true" : ""} }`;
return type;
}
module.exports = getType;