UNPKG

acf-like-fields

Version:

ACF-like dynamic field manager for Node.js + MongoDB

45 lines (36 loc) 1.32 kB
const express = require("express"); const router = express.Router(); const FieldGroup = require("../models/FieldGroup"); const FieldValue = require("../models/FieldValue"); router.post("/field-groups", async (req, res) => { try { const group = await FieldGroup.create(req.body); res.json(group); } catch (err) { res.status(500).json({ error: err.message }); } }); router.get("/field-groups/:resourceType", async (req, res) => { const groups = await FieldGroup.find({ location: req.params.resourceType }); res.json(groups); }); router.post("/field-values/:resourceType/:resourceId", async (req, res) => { const { resourceType, resourceId } = req.params; const { values } = req.body; const existing = await FieldValue.findOne({ resourceType, resourceId }); if (existing) { existing.values = values; await existing.save(); return res.json(existing); } const newVal = await FieldValue.create({ resourceType, resourceId, values }); res.json(newVal); }); router.get("/field-values/:resourceType/:resourceId", async (req, res) => { const val = await FieldValue.findOne({ resourceType: req.params.resourceType, resourceId: req.params.resourceId }); res.json(val || { values: {} }); }); module.exports = router;