【发布时间】:2017-11-12 19:37:48
【问题描述】:
我已经看到 pg-promise 任务和 tx 重用我们可以使用的相同连接
db.task(t => {
return t.one('SELECT id FROM Users WHERE name = $1', 'John')
.then(user => {
return t.any('SELECT * from Events WHERE userId = $1', user.id);
});}).then(events => {// success
}).catch(error => {
// error
});
但是如果我有两个不同的文件,例如UsersModel.getUser(username) 和 EvenModel.getUserEvent(userId)。有什么方法可以传递事务或任务对象。
谢谢
为了进一步详细说明,我有一个文件 LoginController.js
function login(){
UsersModel.getUser(username).then((response)=>{
return EventModel.getEvent(response.ID);
}).then((result)=>{
res.send(result);
})
}
如果我们看到 getUser 的实现是这样的
export function getUser(username){
return db.any('SELECT id FROM Users WHERE name = $1', username);
}
那么我应该如何重构保持UsersModel和EventModel分开
【问题讨论】:
-
在 Node.js 中,源文件的组织方式无关紧要,它不会影响对其他库的使用。那么你的问题到底是什么?
-
对不起,我可能不清楚,但基本上 UsersModelgetUser 有查询 select id from users.. 并且 EventModel 有自己的查询我在两个函数中都使用了 db.any 如何将任务传递给那些模型
-
一方面,如果您想传入任务上下文,为什么不直接传入
t变量,然后在模型中使用它呢?如果您询问组织数据模型的最佳方式,请查看pg-promise-demo。 -
我已经编辑了问题请再看一遍
标签: javascript node.js postgresql pg-promise