第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在一系列 Google 電子表格中循環(huán)

如何在一系列 Google 電子表格中循環(huán)

互換的青春 2023-08-24 15:35:43
我正在嘗試使用 Express 渲染 Google 電子表格中的數(shù)據(jù),并將要渲染的單元格范圍放入其中并循環(huán)后,出現(xiàn)錯誤:“錯誤 [ERR_HTTP_HEADERS_SENT]:在將標題發(fā)送到客戶端后無法設置標題”。該電子表格有 3 行和 6 列,我不確定我做錯了什么,因為錯誤是持續(xù)存在的,無論如何我都無法擺脫它。我的代碼: const express = require('express'); const router = express.Router(); const {google} = require('googleapis'); const keys = require('../credentials.json'); const {   google  } = require('googleapis');  const keys = require('../credentials.json');  /* GET portfolio page. */  router.get('/', function (req, res, next) {  const client = new google.auth.JWT(  keys.client_email,  null,  keys.private_key,   ['https://www.googleapis.com/auth/spreadsheets.readonly']  );  client.authorize(function (err) {   if (err) {     console.log(err);     return;     } else {       console.log('Connected');       gsrun(client);     }    });     async function gsrun(cl) {     const gsapi = google.sheets({     version: 'v4',     auth: cl    });     const optPort1 = {     spreadsheetId: '1W1OKGmGU6Io-1FhWjZLyPkGZz9Ky829zurAzcwmXiHg',     range: ['Portfolio Page!A4:F6']   };   let spreadvals1 = await gsapi.spreadsheets.values.get(optPort1);   console.log(spreadvals1.data.values);    const cols1 = spreadvals1.data.values || [];    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]     })   }); } });  module.exports = router;我的 HTML 看起來像這樣:   <div class="page-header">   <div class="text-headline">       <div class="salutation">{{headlinePortfolio}}</div>   </div>   <div class="text-subheadline">       <div class="descr">{{subheadlinePortfolio}}</div>   </div>
查看完整描述

1 回答

?
慕雪6442864

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)它。


查看完整回答
反對 回復 2023-08-24
  • 1 回答
  • 0 關注
  • 206 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號