Я создал простую конечную точку на Express сервере, используя Sequelize и Postgresql. Эта конечная точка должна получить простой запрос POST с объектом JSON, регистрирующим события в качестве обратного вызова. Дело в том, что это будет JSON объект с большим количеством строк и чисел, для которого я не могу написать конкретную c модель.
У меня есть две проблемы с моей текущей моделью.
Я могу получать события, которые направлены на Event.event, когда на самом деле я хочу получить все, что JSON не должно начинаться с Ключевое «событие», как я написал на моей модели. Однако на самом деле я не знаю, как создать модель, которая позволяет нам отправлять любые неопределенные JSON в мою таблицу События.
Если я получаю те обратные вызовы, которые пытаются отправить JSON в эту конечную точку, они, естественно, приходят в NULL, поскольку они не соответствуют Event.event
Вот модель:
const Sequelize = require('sequelize');
const sequelize = require('../db');
const Event = sequelize.define(
'Event',
{
event: {type: Sequelize.JSON, allowNull: false}
}
);
module.exports = Event;
И маршрутизатор:
const { Router } = require("express");
const Event = require("./model");
const router = new Router();
router.get("/event-receiver", (req, res, next) => {
const limit = req.query.limit || 25;
const offset = req.query.offset || 0;
Event.findAll({ limit, offset })
.then(allEvents => res.json(allEvents))
.catch(next);
});
router.post("/event-receiver", (req, res, next) => {
Event.create(req.body)
.then(newEvent => res.status(201).json(newEvent))
.catch(next);
});
module.exports = router;
Мой актуальный вопрос: как мне написать модель, которая принимает любой неопределенный тип JSON, который отправляется на эту конечную точку?
Например :
{
AnyRandomJSON: {type: Sequelize.JSON, allowNull: False}
}
На самом деле не нужно давать ему имя типа «событие», а просто получать все, что отправлено в «/ event-receive» и регистрироваться в указанном столбце c на моем postgresql под названием «События или данные», что-нибудь в этом роде.
Читая документацию и другие справочные статьи, я не узнаю, как это сделать простым способом.