UNPKG

@tasolutions/express-core

Version:
77 lines (69 loc) 3.13 kB
const Response = require('../../utils/response'); const { mapHeadersToQuery } = require('../../utils/requestHeader'); const { parseFormData } = require('../../utils/collection.util'); const { uploadFiles } = require('../../utils/upload'); const { authInfo } = require('../../config'); module.exports = { /** * This crud create */ create: async (req, res, Collection) => { try { await mapHeadersToQuery(req, Collection); if (req.userLogin && req.userLogin.userId) { req.body.creatorId = req.userLogin.userId; } // Merchant if (authInfo.enableMerchant && !req.isSystemAdmin && configs.isFilterMerchant) { const { merchant } = req.headers; req.body.merchant_id = merchant; } // 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); // Xử lý trường hợp array if (Array.isArray(parsedBody)) { // Nếu là array, tạo nhiều documents const createdEntries = []; for (const item of parsedBody) { if (item && typeof item === 'object') { const newEntry = await uploadFiles(req, Collection); const createdEntry = await Collection.create({ ...newEntry, ...item }); createdEntries.push(createdEntry); } } return Response.success(res, createdEntries); } // Xử lý trường hợp object có items array else if (parsedBody.items && Array.isArray(parsedBody.items)) { const createdEntries = []; const { items, ...otherFields } = parsedBody; for (const item of items) { if (item && typeof item === 'object') { const newEntry = await uploadFiles(req, Collection); const createdEntry = await Collection.create({ ...newEntry, ...otherFields, // Thêm các fields khác (creatorId, etc.) ...item }); createdEntries.push(createdEntry); } } return Response.success(res, createdEntries); } // Nếu là object đơn lẻ, tạo một document else { const newEntry = await uploadFiles(req, Collection); const createdEntry = await Collection.create({ ...newEntry, ...parsedBody }); return Response.success(res, createdEntry); } } catch (e) { return Response.error(res, e.message); } } }