我正在嘗試建立一個社交網路。我有一個“連接”/“朋友請求”的集合。架構如下:
{
senderId: { type: String },
receiverId: { type: String },
approved: { type: Boolean },
},
當此人尚未批準連接時,連接將標記為“待處理”。當用戶進入網站時,我會使用以下命令獲取人們發送給他的所有待處理連接:
const requestsPending = await Connection.find({
receiverId: userId,
approved: false,
});
問題是,在后端,我想獲取發送好友請求的人的詳細資訊(這樣我就可以顯示他們的姓名 圖片)。我想遍歷掛起的請求陣列,并獲取發送請求的用戶的額外資料。
await User.findById(requestsPending[0][senderId]);
知道如何為每個元素做這件事嗎?最好的方法是什么?或者知道如何更有效地做到這一點?
謝謝。
uj5u.com熱心網友回復:
這似乎有效:
var requestsPendingWithUsersData = await Promise.all(
requestsPending.map(async (item) => {
const userData = await User.findById(item.senderId);
return {
item,
senderData: { picture: userData.picture, name: userData.username },
};
})
);
uj5u.com熱心網友回復:
await User.find({
'senderId': { $in: [
101,102,103,...
]}
})
您可以嘗試類似上面的方法,將一個 senderID 陣列傳遞給 $in。$in 子句類似于 SQL 中的 like 運算子。
如果 senderId 是 ObjectId,則將它們作為 ObjectID 型別傳遞
await User.find({
'senderId': { $in: [
mongoose.Types.ObjectId(<senderID>),
]}
})
如果 mongo 檔案更重/更大,請在查詢末尾使用 lean()。啟用精益選項會告訴 Mongoose 跳過實體化完整的 Mongoose 檔案。
await User.find({
'senderId': { $in: [
101,102,103,...
]}
}).lean()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/417774.html
標籤:
上一篇:如何從ReactNative中的SQLite查詢回傳另一個函式中的資料
下一篇:HTTP請求未異步發送
