Как сохранить разные объекты одним почтовым запросом в Express? - PullRequest
0 голосов
/ 10 мая 2018

Это кажется очень простой вещью, но я не могу найти правильный способ сделать это. Мой проект Node / Express / Sequelize по существу сохранит поиск одного пользователя (в таблицу Searches) и одну или несколько ссылок из результата поиска (в таблицу Results). Пользователь выполняет поиск, получает результаты, выбирает результаты, которые он считает полезными, а затем нажимает кнопку «Сохранить», чтобы сохранить как поисковый запрос, так и выбранные результаты.

Поиск имеет много результатов, поэтому у объекта Result будет внешний ключ searchId (что заставляет меня думать, что сначала необходимо сохранить объект Search, чтобы иметь идентификатор для каждого объекта Result). Пока я могу успешно сохранить элемент поиска со следующим кодом:

Контроллеры / search.js

const Search = require('../models').Search;

module.exports = {
    create(req, res) {
        return Search
        .create({
          text: req.body.search_text  
        })
        .then(search => res.status(201).send(search))
        .catch(error => res.status(400).send(error));
    } };


маршруты / index.js

const searchController = require('../controllers').search;
const resultController = require('../controllers').result;
const axios = require('axios');
const bingWebSearch = require('../helpers/bingWebSearh')

module.exports = (app) => {

    //some app.get requests here;

    app.post('/search/results', searchController.create);
};


Этот app.post должен сохранить поиск в таблице поиска, а также сохранить (возможно) несколько результатов в таблицу результатов с идентификатором объектов поиска в качестве ассоциации. Как я должен справиться с этим? Должен ли он быть в одном запросе app.post или должен быть разбит на два, где первый сохраняет поиск, а затем каким-то образом переходит ко второму запросу app.post для обработки результатов (а также передает идентификатор из недавно созданного поиска объект)?

1 Ответ

0 голосов
/ 10 мая 2018

Помните, что настроенная конечная точка http (либо GET / POST / DELETE и т. Д.) Действует как интерфейс между сервером и клиентом для какого-либо вида связи.

Если вам не требуется обратная связь / ввод от клиента, вы можете обрабатывать логику обработки только как часть одной конечной точки. В вашем случае конечная точка /search/results может сохранять данные в двух таблицах как часть одного вызова конечной точки. Очевидно, вы сделаете код модульным и сохраните логику максимально свободной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...