[英]one-to-many relationship Node Js
我試圖根據他們的 session_id 從當前登錄的用戶中選擇所有照片。
我有一個照片表,用於跟蹤屬於每個用戶的圖片。
身份證 | 用戶照片 | user_id(外鍵)
let select_photos_sql = "SELECT * FROM photos WHERE user_id = ?";
mysql_connection.query(select_photos_sql, [session_id], function (error, rows) {
if(error){
res.send("An error has occurred, please try again later.");
} else {
if(rows.length > 0){ /**IS THIS BLOCK NECESSARY? WHEN I CHANGE IT TO === 1, I DON'T GET THE
ERROR BUT I GET NO PHOTOS FOUND**/
rows.forEach(function (row) {
let photos = row.user_photos;
console.log(photos); /**LOGS OUT THE PHOTOS FROM THE USER BUT CAN'T DISPLAY IT**/
res.render("user_photos", {photos: photos});
});
} else {
res.send("No photos found.");
}
}
});
當我運行代碼時,我不斷收到此錯誤消息“在將標頭發送到客戶端后無法設置標頭。” 我究竟做錯了什么? 我需要在這里加入用戶表嗎? 任何幫助將不勝感激。
“發送到客戶端后無法設置標頭。” 意味着您正在嘗試向用戶發送多個響應,使用可以使用此功能
res.json(rows.map(function (row) { return row.user_photos }))
您不能從循環發送響應,因為它第一次發送響應,之后,它給出錯誤。 請試試這個-
let select_photos_sql = "SELECT * FROM photos WHERE user_id = ?";
mysql_connection.query(select_photos_sql, [session_id], function (error,
rows) {
if(error){
res.send("An error has occurred, please try again later.");
} else {
if(rows.length > 0){ /**IS THIS BLOCK NECESSARY? WHEN I CHANGE IT TO === 1, I DON'T GET THE
ERROR BUT I GET NO PHOTOS FOUND**/
var photos_arr = [];
var photo_count = 0;
rows.forEach(function (row) {
let photos = row.user_photos;
console.log(photos); /**LOGS OUT THE PHOTOS FROM THE USER BUT CAN'T DISPLAY IT**/
photos_arr.push(photos);
photo_count = photo_count+1;
});
if (photo_count == rows.length) {
res.render("user_photos", {photos: photos_arr});
}
} else {
res.send("No photos found.");
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.