这似乎是一件非常基本的事情,但我无法找到正确的方法。 My Node / Express / Sequelize项目本质上将保存单个用户搜索(到Searches表)和搜索结果中的一个或多个链接(到Results表)。用户搜索,获取结果,选择他们认为有用的结果,然后点击保存按钮以保存搜索查询和所选结果。
搜索有很多结果,因此Result对象将具有searchId的外键(这使我认为需要首先保存搜索对象以在每个Result对象上放置一个id)。到目前为止,我可以使用以下代码成功保存搜索项:
控制器/ 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
应该将搜索保存到搜索表中,并将(可能的)多个结果保存到结果表中,并将该搜索对象id作为关联。我应该怎么处理这个?它应该在一个app.post
请求中,还是应该分成两个,第一个保存搜索,然后以某种方式转到第二个app.post
请求来处理结果(并且还传入id来自新创建的搜索对象)?
答案 0 :(得分:0)
请记住,配置的http端点(GET / POST / DELETE等)充当服务器和客户端之间的接口,用于某种通信。
除非您需要来自客户端的反馈/输入,否则您只能将处理逻辑作为一个端点的一部分来处理。在您的情况下,/search/results
端点可以将这两个表中的数据保留为单个端点调用的一部分。显而易见,您将使代码模块化并使逻辑尽可能松散耦合。