const form = await Form.findOne({ _id: res._id }).populate({
path: "activity.viewedBy",
model: User,
});
const a = await form.activity.map((a) => a.viewedBy);
console.log(a.map((e) => e.email));
“無法讀取未定義的屬性‘電子郵件’”
為什么?
a是一個陣列,充滿了物件,像這樣:
[
{
id: 123,
email: example@email.com
},
{
id: 456,
email: nice@email.com
}
]
編輯,共享整個異步功能:
const viewForm = async (req, res) => {
const form = await Form.findOne({ _id: res._id }).populate({
path: "activity.viewedBy",
model: User,
});
const a = await form.activity.map((a) => a.viewedBy);
console.log(a.map((e) => e.email));
await Form.updateOne(
{ _id: res._id },
{
$push: {
activity: {
viewedBy: res.user,
date: new Date(),
},
},
}
);
return {
statusCode: 200,
body: JSON.stringify(`Form viewed.`),
};
};
編輯2:
undefined陣列中有一個,在物件中,我沒有注意到......這就是我得到未定義的原因。
uj5u.com熱心網友回復:
a可能具有與您想象的不同的結構(嘗試console.log(a)),只是證明:
const data = [
{
id: 123,
email: "[email protected]"
},
{
id: 456,
email: "[email protected]"
}
];
const result = data.map((a) => a.email);
console.log(result);
此外,為變數提供有意義的名稱有助于防止錯誤。
uj5u.com熱心網友回復:
await form.activity.map((a) => a.viewedBy);
將回傳一個viewedBy值陣列。所以陣列a不包含完整的物件。它包含一個viewedBy元素陣列。另外,請看一下該函式的map()功能。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/354244.html
標籤:javascript MongoDB 猫鼬
