我试图简单地从表中读取一个值,并根据返回值调用其他查询并返回组合结果。
让我们举一个简单的例子:表Users
有id
,name
并且emailid
假设如果emailid
不为空,我们想调用电子邮件表并返回类似的结果{ id:[id], name:[name], email:[email]}
。
我试图简单地从表中读取一个值,并根据返回值调用其他查询并返回组合结果。
让我们举一个简单的例子:表Users
有id
,name
并且emailid
假设如果emailid
不为空,我们想调用电子邮件表并返回类似的结果{ id:[id], name:[name], email:[email]}
。
使用pg-promise支持的最新语法:
db.task(t => {
return t.map('SELECT * FROM Users', [], user => {
return user.emailid ?
t.one('SELECT * FROM Emails WHERE id = $1', user.emailid, e=> {
user.email = e.email;
return user;
}) : user;
}).then(t.batch);
})
.then(data => {
// success
})
.catch(error => {
// error
});
请参阅 API:Database.map、Database.one。
另请参阅相关问题:Get a parents + children tree with pg-promise。
注意:更好的方法是使用带有INNER JOIN
.