Если я правильно понимаю цель, вы захотите зациклить каждое из этих определений поля в поле data
в объекте JSON и преобразовать его в допустимое поле для схемы мангуста, сопоставив его с реальным типом. Поэтому вы можете начать с чего-то вроде этого:
var mongoose = require('mongoose')
var typeMappings =
{"String":String,
"Number":Number,
"Boolean":Boolean,
"ObjectId":mongoose.Schema.ObjectId,
//....etc
}
function makeSchema(jsonSchema){
var outputSchemaDef = {}
for(fieldName in jsonSchema.data){
var fieldType = jsonSchema.data[fieldName]
if(typeMappings[fieldType]){
outputSchemaDef[fieldName] = typeMappings[fieldType]
}else{
console.error("invalid type specified:", fieldType)
}
}
return new mongoose.Schema(outputSchemaDef)
}
Чтобы иметь дело со встроенными объектами и типами массивов, вы, вероятно, захотите изменить это, чтобы сделать его рекурсивным, и опускаться глубже, когда он встречает объект этих типов, поскольку поля могут быть вложены вместе с произвольной глубиной / структурой .
Надеюсь, это поможет.