![服務器資料在客戶端作為 [Object object] 傳入](https://img.uj5u.com/2021/12/03/36fb266039ae4885861b700f121cabc6.png)
我試圖顯示我從服務器發送的資料,但它沒有正確通過(請參閱上圖左下角的 [Object object])。這是客戶端代碼:
<div class="card-body">
<h5 class="card-title"><%= event.event_name %></h5>
<p class="card-text"><%= event.description %></p>
<p class="card-text"><%= eventData %></p>
</div>
服務器以以下格式發送陣列中的資料:
const eventData = [{
_id: 'objectId_for_the_event',
guests: [
'guestId1',
'guestId2',
'guestId3',
'guestId4',
'guestId5'
],
totalGuests: 5,
attendedGuests: 0
}
]
我希望totalGuests 和 attentedGuests 的值顯示在客戶端上。這是我在服務器中的函式(它很長而且有點令人困惑,但最后一行中的 console.log 運行良好,因此變數正在運行):
module.exports.showEvent = async (req, res) => {
const event = await Event.findById(req.params.id).populate('artist');
const { guest_id } = req.cookies;
let totalGuests = 0;
let attendedGuests = 0;
const eventData = await Event.aggregate([
{
"$match": {
"_id": objectId(req.params.id)
}
},
{
$project: {
_id: 1,
name: 1,
guests: 1,
totalGuests: { $cond: { if: { $isArray: "$guests" }, then: { $size: "$guests" }, else: "NA" } },
attendedGuests: {
$size: {
$filter: {
input: "$guests",
as: "guest",
cond: {
$and: [{
$eq: ["$$guest.attended", "Y"]
}]
}
}
}
}
}
}
])
if (eventData && Array.isArray(eventData) && eventData.length > 0) {
totalGuests = eventData[0].totalGuests;
attendedGuests = eventData[0].attendedGuests;
}
if (!event) {
req.flash('error', 'Cannot find that Event');
return res.redirect('/events');
}
res.render('events/show', { event, eventData });
console.log(totalGuests, attendedGuests);
};
如何將這兩個變數從陣列中取出并放到客戶端上?
uj5u.com熱心網友回復:
JSON.stringify()在發送它們之前,您需要使用來對值進行字串化。它會是這樣的:
JSON.stringify(attendedGuests);
uj5u.com熱心網友回復:
嘗試傳遞陣列中的第一個物件而不是陣列本身:
res.render('events/show', { event, eventData[0] });.
您也可以像解構它const [{totalGuests, attendedGuests}] = eventData;,然后將這兩個變數作為totalGuests和attendedGuests
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/372639.html
標籤:javascript 节点.js MongoDB 猫鼬 客户端服务器
上一篇:從WebAPI決議Json
下一篇:Mongoose TypeScript:有條件地find()模型上的檔案拋出錯誤:聯合型別具有簽名,但沒有相互兼容
