我必須提供一個包含 3000 多個結果的 HTML 表,從我的 MongoDB 獲取 MachineID、用戶名、資料。但是,我在將資料渲染到資料表時遇到了問題。
Data 和 MachineID 來自模型/表日志,用戶名來自用戶。它們之間的關系將是 Logs 中的 user_id 和 User 中的 _id 物件。
正如您在我的查詢中看到的,我試圖將 pc.user_id 與父表的物件 _id 進行比較,以獲取該行程的用戶名。
我的查詢:
Pincode.find({}).exec(async (err: any, pincodes: any) => {
for (var pc of pincodes){
var uid = pc.user_id;
var res = await User.findById({ _id:ObjectId(uid) },'username').exec();
if(res!= null){
pc.user_id = res.username
}else{
pc.user_id = "Unknown"
}
}
但這大大減慢了我的查詢速度,因為我回圈遍歷了所有 3000 個檔案。
謝謝你的回答,
uj5u.com熱心網友回復:
你可以試試這個:
let getData = async () => {
try {
let pincodeData = await Pincode.find({}).exec()
if (pincodeData.length < 1) {
return res.send({"error": true, "message": "No data found"});
}
await Promise.all(
pincodeData.map(async (x) => {
let getUserData = await User.findOne(
{ _id: ObjectId(x.user_id) },
{ _id: 0, username: 1}
).exec();
x.user_id: 'Unknown';
if (getUserData) {
x.user_id: getUserData.username;
}
})
)
return res.send({ "error": false, "message": "Data found", "data": pincodeData });
} catch (error) {
return res.send({ "error": true, "message": "No data found" });
}
}
getData()
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/359653.html
標籤:javascript 爪哇 节点.js 打字稿 MongoDB
