51 lines
1.6 KiB
JavaScript
51 lines
1.6 KiB
JavaScript
|
|
const mongoose = require('mongoose')
|
|
const dynamicModelSchema = new mongoose.Schema({}, { strict: false });
|
|
|
|
|
|
|
|
module.exports.CreateModel = [
|
|
async (req, res, next) => {
|
|
try {
|
|
const { modelName, fields } = req.body;
|
|
|
|
if (!modelName || !fields || !Array.isArray(fields)) {
|
|
return res.status(400).send('ورودی نامعتبر');
|
|
}
|
|
|
|
if (mongoose.modelNames().includes(modelName)) {
|
|
return res.status(400).json({ message: "مدل قبلا ایجاد شده" });
|
|
}
|
|
|
|
const schemaDefinition = {};
|
|
fields.forEach(field => {
|
|
schemaDefinition[field] = { type: String };
|
|
});
|
|
|
|
const schema = new mongoose.Schema(schemaDefinition);
|
|
mongoose.model(modelName, schema);
|
|
|
|
return res.status(200).json(`مدل ${modelName} ایجاد شد با فیلد های: ${fields.join(', ')}`);
|
|
} catch (e) {
|
|
next(e);
|
|
}
|
|
}
|
|
];
|
|
|
|
module.exports.SaveDataModel = [
|
|
async (req,res,next)=>{
|
|
const { modelName, data } = req.body;
|
|
|
|
if (!modelName || !data || typeof data !== 'object') {
|
|
return res.status(400).send('ورودی نامعتبر');
|
|
}
|
|
try {
|
|
const DynamicModel = mongoose.model(modelName);
|
|
const instance = new DynamicModel(data);
|
|
await instance.save();
|
|
res.send('داده فرم ذخیره شد');
|
|
} catch (error) {
|
|
next(error)
|
|
}
|
|
}
|
|
] |