问题
I am trying to simply read a value from a table and based on the return value call for additional queries and return the combined results.
let's take a simple example:
table Users
has id
, name
and emailid
and let's say if emailid
is not null we want to call the email table and return a results like { id:[id], name:[name], email:[email]}
.
回答1:
Using the latest syntax supported by 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
});
See the API: Database.map, Database.one.
See also a related question: Get a parents + children tree with pg-promise.
NOTE: A better approach would use a single query with INNER JOIN
.
来源:https://stackoverflow.com/questions/38089864/conditional-task-with-pg-promise