ama
ama copied to clipboard
NodeJS 無法結束
db.collection('rooms').get().then(rooms => {
var roomID = [];
rooms.forEach(room => {
roomID.push(room.id);
});
return roomID;
}).then(async roomID => {
for (let id of roomID) {
let users = await db.collection('/room_users/' + id + '/list').get();
for (let user of users.docs) {
try {
let userData = await admin.auth().getUser(user.id);
} catch (error) {
console.log(error);
}
}
}
}).then(() => {
console.log('done.');
});
第二個版本
async function foo() {
let rooms = await db.collection('rooms').get();
for (let room of rooms.docs) {
let users = await db.collection('/room_users/' + room.id + '/list').get();
for (let user of users.docs) {
try {
let userData = await admin.auth().getUser(user.id);
console.log(userData.uid);
} catch (error) {
console.log(error);
}
}
}
console.log('Done.');
}
console.log('Start.');
foo();
遇到的問題
let userData = await admin.auth().getUser(user.id);
有這一行 NodeJS 無法結束, 已確定沒有其他 error , 也有輸出 done.
但就是結束不了
嘗試過的解法
將 let userData = await admin.auth().getUser(user.id); 移除
輸出 done. 後能順利結束
你需要補上 admin
這個變數及其下方法的程式碼
方法名稱看起來有建立資料庫連線之類的行為,很可能是用完沒關閉,或者建立時沒 .unref()