我是一個nodejs新手。我有兩個簡單的模型,用戶和故事。這是我想做的事情:
- 我想檢索所有具有 {status:"public"} 的故事并將其存盤在一個名為 retrievedStories 的陣列中。
- 然后對于每個故事,我想使用它的“用戶”欄位(其中包含用戶的物件 ID)從用戶中查找用戶的名稱
- 然后在retrieveStories 的每個元素中添加一個名為authorName 的新鍵,其中包含用戶名。
以下是模型:
const UserSchema = new mongoose.Schema({
googleId: {
type: String,
required: true
},
displayName: {
type: String,
required: true
},
firstName: {
type: String,
required: true
},
lastName: {
type: String,
required: true
},
image: {
type: String,
},
createdAt: {
type:Date,
default: Date.now()
}
})
const StorySchema = new mongoose.Schema({
title: {
type: String,
required: true,
trim: true
},
body: {
type: String,
required: true
},
status: {
type: String,
default: 'public',
enum: ['public', 'private']
},
user: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
},
createdAt: {
type:Date,
default: Date.now()
}
})
這是我嘗試過的,但不起作用。檢索故事但未添加作者姓名。任何幫助(可能是更好的方法?)將不勝感激!
router.get('/',async (req,res)=>{
try {
const retrievedStories = await Story.find(
{status: "public"}
)
await Promise.all(retrievedStories.map(async (story) =>{
const author = await User.findById(story.user)
story.authorName = author.displayName
}))
return res.json(retrievedStories)
} catch (error) {
console.log(error)
}
})
uj5u.com熱心網友回復:
您可以使用populateto 檢索User資料來簡化查詢:
router.get('/', async (req, res) => {
try {
const retrievedStories = await Story.find({ status: 'public' })
.populate('user')
.exec();
return res.json(retrievedStories);
} catch (error) {
console.log(error);
}
});
然后,您可以 通過訪問來訪問每個User的資料。
有關查詢人口的更多資訊,請參閱官方檔案。displayNameStorystory.user.displayName
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/477629.html
標籤:javascript 节点.js 猫鼬 异步等待
上一篇:過濾器陣列包含多個專案
下一篇:PHP中的搜索功能
