1 回答

TA貢獻1812條經(jīng)驗 獲得超5個贊
問題就出在這一行:
const colsdata = cols1.map((element) => {
res.set('Content-Type', 'text/html');
res.render('portfolio', {
headlinePortfolio: element[0],
subheadlinePortfolio: element[1],
image1: element[3],
client: element[4],
campaign: element[5]
})
})
您不能渲染多次。Render調(diào)用res.send()方法將數(shù)據(jù)發(fā)送到前端。所以發(fā)生的事情是:您發(fā)送 (res.send()) 多次(因為 res.render 在地圖內(nèi)),因此出現(xiàn)錯誤。
為了防止渲染發(fā)送數(shù)據(jù),您必須提供如下回調(diào):
res.render('portfolio', {
headlinePortfolio: element[0],
subheadlinePortfolio: element[1],
image1: element[3],
client: element[4],
campaign: element[5]
}, ()=>console.log(`template created do something`))
當您準備好發(fā)送所有內(nèi)容時,您將嘗試一次性發(fā)送所有內(nèi)容:res.send(data)
此外,您router.get必須異步才能等待關鍵字工作。
更多更新:
您已經(jīng)更新了您的答案,因此這是我上面分享的所有內(nèi)容的一種更愚蠢的方法。
您正在嘗試創(chuàng)建一個模板,但問題是您正在創(chuàng)建多個模板,因為您正在循環(huán)內(nèi)使用函數(shù)。您應該做的是將函數(shù)從循環(huán)中刪除。
不幸的是,我無法準確地教授如何實現(xiàn)您想要實現(xiàn)的目標。我將重現(xiàn)一個最小輸出,以便您可以從那里開始工作:
注意:為了簡化,這里不存在的所有內(nèi)容都應該保持不變。
/* GET portfolio page. */
router.get('/', async function (req, res, next) {
...
const cols1 = spreadvals1.data.values || [];
// I have removed the .map fn. You should do the same
res.set('Content-Type', 'text/html');
res.render('portfolio', {
headlinePortfolio: cols[0][0], //row 1 - elem (col) 1
subheadlinePortfolio:cols[0][1], //row 1 - elem (col) 2
image1: cols[0][3], //row 1 - elem (col) 4
client: cols[0][4],//row 1 - elem (col) 5
campaign: cols[0][5], // row 1 - elem (col) 6
})
}
});
module.exports = router;
對于上面的示例,您將不會出現(xiàn)錯誤,并且只會獲得第一行。如果您想要下一行,則必須增加row[1]、row[2]、row[3]等等...如果您想要來自不同行的多個(分隔的)模板,您將必須深入挖掘并理解我所說的回調(diào)并用 map 來實現(xiàn)它。
添加回答
舉報