我正在使用節點和pg-promise創建一個基本的rest API,並且遇到某個問題需要查詢特定用戶的所有數據。以下是返回的數據應該是什麼樣子。地址,電話號碼和技能都在不同的表格中。我沒有任何問題檢索地址或電話號碼,它只是我看來無法得到的技能。不太確定如何在主要查詢後獲取多個查詢以獲取所有這些其他字段,請參閱附加的代碼以供參考,我將很樂意回答任何問題。pg-promise任務和映射具有多個相同級別的嵌套查詢
{
"user_id": 1,
"first_name": "Eugene",
"last_name": "Hanson",
"display_name": "Eugene Hanson",
"email": "[email protected]",
"hash": "88a6aa27235d2e39dd9cb854cc246487147050f265578a3e1aee35be5db218ef",
"privilege_id": 14,
"seniority": 1,
"birthday": "19-11-1940 00:00:00.0",
"shift_count_total": 587,
"shift_count_year": 62,
"address_id": 1,
"street": "92 Schmedeman Lane",
"city": "Fort Smith",
"state": "AR",
"zip": 72905,
"phone_numbers": [
{
"phone_number": "62-(705)636-2916",
"name": "PRIMARY"
}
],
"skills": [
"Head Audio",
"Head Video",
"Head Electrician",
"Carpenter",
"rigger"
]
}
function getAllUsers() {
// console.time("answer time")
var deferred = Q.defer();
db.task(t => {
return t.map('SELECT * \
FROM users \
JOIN addresses \
ON users.address_id = addresses.address_id',[], user => {
var user_id = user.user_id;
// console.log(user_id)
console.time("answer time")
return t.manyOrNone('SELECT phone_numbers.phone_number, phone_types.name \
FROM users \
JOIN users_phone_numbers \
ON users.user_id = users_phone_numbers.user_id \
JOIN phone_numbers \
ON users_phone_numbers.phone_id = phone_numbers.phone_id \
JOIN phone_types \
ON phone_numbers.phone_type_id = phone_types.phone_type_id \
WHERE users.user_id = $1', user.user_id)
.then(phone_numbers=> {
// logger.log('info', phone_numbers)
user.phone_numbers = phone_numbers;
return user;
})
}).then(t.batch);
})
.then(data => {
// console.log(data)
console.timeEnd("answer time");
var response = {code: "200",
message: "",
payload: data};
deferred.resolve(response);
})
.catch(error => {
var response = {code: error.code,
message: error.message,
payload: ""};
logger.log('error', error)
deferred.reject(response)
});
問題是什麼?你取而代之的是什麼?你的'.catch'處理程序在哪裏?你需要正確地完成你的問題,才能得到回答;) –
編輯原始文章,以包括在我的複製和粘貼中意外遺漏的'.catch'。很抱歉,我的問題並不清楚,我想要做的是通過所有用戶,然後從各種其他表中獲取所有關聯數據,然後將其合併回用戶記錄並將其發送回客戶端。我目前只能爲電話號碼執行此操作,但不知道如何添加另一個查詢以便在地圖中使用以獲取技能。任何建議是歡迎,並隨時讓我知道,如果我需要澄清更多。 – seanpdiaz