pg-promise-将多个嵌套循环查询合并到父数组结果 [英] pg-promise - Combine multiple nested loop queries to parent array result
本文介绍了pg-promise-将多个嵌套循环查询合并到父数组结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的问题基于合并嵌套循环查询到父数组结果-pg-promise .我也有类似的情况,但是有多个查询要组合才能得到最终结果.以下是我尝试用来实现我的要求的代码.但是我无法从与主查询结合的第二个查询中获得结果.我是一个初学者,想知道正确的实现方式.
My question is based on Combine nested loop queries to parent array result - pg-promise. I'm having a similar scenario but have multiple queries to be combined to get my final results. Following is my code with which I tried to implement my requirement. But I was not able to get the results from second query combined with the main query. I'm a beginner and would like to know the correct way of implementation.
db.task(t => {
const a = studies => t.any ('SELECT facility_contacts.name, facility_contacts.email, facility_contacts.phone FROM facility_contacts WHERE nct_id = $1', studies.nct_id).then(facility_contacts => {
studies.facility_contacts = facility_contacts;
return studies
});
const b = studies => t.any ('SELECT eligibilities.criteria, eligibilities.gender FROM eligibilities WHERE nct_id = $1', studies.nct_id).then(eligibilities => {
studies.eligibilities = eligibilities;
return studies;
});
return t.map('SELECT studies.nct_id, studies.official_title, studies.phase, facilities.country FROM studies, facilities WHERE facilities.country LIKE \'%Ireland%\' LIMIT 10',[], a, b).then(t.batch);
}).then(studies => {
console.log(studies);
res.send(studies);
}).catch(error => {
console.log(error);
});
谢谢.
推荐答案
这是一种可能性:
db.task(t => {
const a = studies => t.any('SELECT facility_contacts.name, facility_contacts.email, facility_contacts.phone FROM facility_contacts WHERE nct_id = $1', studies.nct_id)
.then(facility_contacts => {
studies.facility_contacts = facility_contacts;
return studies
});
const b = studies => t.any('SELECT eligibilities.criteria, eligibilities.gender FROM eligibilities WHERE nct_id = $1', studies.nct_id)
.then(eligibilities => {
studies.eligibilities = eligibilities;
return studies;
});
const c = studies => t.batch([a(studies), b(studies)]);
return t.map('SELECT studies.nct_id, studies.official_title, studies.phase, facilities.country FROM studies, facilities WHERE facilities.country LIKE \'%Ireland%\' LIMIT 10', [], c)
.then(t.batch);
})
.then(studies => {
console.log(studies);
res.send(studies);
})
.catch(error => {
console.log(error);
});
可以有许多不同的方法,例如基于JSON的方法,它们的性能更好.
There can be many different approaches, some way better performing, like JSON-based.
这篇关于pg-promise-将多个嵌套循环查询合并到父数组结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文