@tasolutions/express-core
Version:
All libs for express
46 lines (38 loc) • 1.74 kB
JavaScript
const Response = require('../../../../utils/response');
const { mapHeadersToQuery } = require('../../../../utils/requestHeader');
const { parseFormData } = require('../../../../utils/collection.util');
const { uploadFiles } = require('../../../../utils/upload');
const { DocumentTemplate } = require('../models');
module.exports = {
/**
* This crud create
*/
create: async (req, res, Collection) => {
try {
await mapHeadersToQuery(req, DocumentTemplate);
// Remove fields with empty string values from req.body
Object.keys(req.body).forEach((key) => {
if (req.body[key] === "") {
req.body[key] = null;
}
});
// Phân tích cú pháp req.body thành cấu trúc đối tượng
const parsedBody = parseFormData(req.body);
// Validate key uniqueness nếu key được cung cấp
if (parsedBody.key) {
const existingTemplate = await DocumentTemplate.findOne({ key: parsedBody.key });
if (existingTemplate) {
return Response.error(res, `Template with key '${parsedBody.key}' already exists`, 400);
}
}
const newEntry = await uploadFiles(req, DocumentTemplate);
const option = {
collection_name: Collection.modelName,
}
const createdEntry = await DocumentTemplate.create({ ...newEntry, ...parsedBody, ...option }); // Kết hợp các trường với parsedBody
return Response.success(res, createdEntry);
} catch (e) {
return Response.error(res, e.message);
}
}
}