acf-like-fields
Version:
ACF-like dynamic field manager for Node.js + MongoDB
45 lines (36 loc) • 1.32 kB
JavaScript
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;