Это кажется очень простой вещью, но я не могу найти правильный способ сделать это. Мой проект 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
для обработки результатов (а также передает идентификатор из недавно созданного поиска объект)?