我使用的是一流的插件节点postgres,https://github.com/brianc/node-postgres
我有这个更新调用。我有一个大约30列在我的在我的表。有没有更简单的方法来更新这些然后这样做?
/*
Post /api/project/products/:pr_id HTTP/1.1
*/
exports.updateProduct = function(req, res){
pg.connect(cs, function(err, client, done) {
var query = "UPDATE products SET pr_title = ($1), pr_usercode = ($2) WHERE pr_id=($3)";
client.query(query, [req.body.pr_title, req.body.pr_usercode, req.params.pr_id], function(err, result) {
if (handleErr(err, done)) return;
done();
sendResponse(res, result.rows[0]);
})
});
};
我这里只有三列。当我写所有30列时,它会很混乱,很难维护。一定要用一个简单的行更新req.body中的所有列吗?
有什么想法吗?
5条答案
按热度按时间new9mtju1#
你可以像这样展开一个函数:
然后这样使用它:
或者,如果您需要一个ORM,因为您将做很多类似上面的事情,那么您应该检查像Knex.js这样的模块
3df52oht2#
很好的答案已经给出了,但恕我直言,在某个方面还不够好,它们都缺乏很好的抽象。我将尝试提供更抽象的方法来使用
node-postgres
更新您的数据。遵循官方文档始终是一种好的做法,以下代码结构取自node-postgres,您可以根据自己的喜好对其进行扩展:
这是我,这是您与数据库交互的地方
以下是CRUD操作的辅助方法,它们将使用准备好的值准备查询文本:
最后,您可以在路由处理程序中使用它,而不会扰乱代码库:
便利的公用设施:
7uzetpgm3#
我喜欢使用knexjs,它可以和postgre一起工作,也是一种有趣的javascript方式来编写查询(没有那些讨厌的SQL字符串操作)。
以这个方法为例,它存储了一些联系人信息,联系人信息的JSON模式在其他地方定义(验证时也很有用),结果是一个代码生成的查询,只包含传入的列。
Knexjs也有一些漂亮的postgre-only选项(如果我没有使用MySQL,这对我来说会很有用)
col17t5w4#
我举个简单的例子:
guicsvcw5#
创建插入查询
用法
因此,像wise一样,您可以创建更新、删除查询