簡體   English   中英

使用Node.js和Express將JSON數據與sendFile()一起發送的正確方法

[英]Proper way to send JSON data along with sendFile() with Node.js and Express

我已經使用Express設置了Node.js服務器,並且已經設置了路由。 導航到特定位置:“ / users / id”時,我當前正在使用sendFile(),但我也想將JSON數據傳遞到頁面中。

我知道我可以為頁面提供服務,然后在頁面加載時發出ajax請求,但是似乎我想盡可能減少服務器端調用。

我想做以下類似的事情,但是即使這行得通,我也不確定如何從網頁端獲取數據。 (如果我不進行單獨的ajax調用)

app.get('/'+element+'/:id', (request, response) => {
            const id = request.params.id;
            pool.query('SELECT * FROM '+element+' WHERE id = ?', id,(error, result)=>{
            if(error) throw error;
            response.sendFile(path.resolve(__dirname+'/../html/index.html'));
            response.json({message: result.name});
            });
        });

我想返回數據和文件,並且想知道如何在與文件同時發送的情況下獲取數據。

由於您只需要為給出的示例容納一個簡單的字符串,因此您可以考慮通過響應標頭完成此操作。 雖然這不是最常規的方法,但在您的情況下可能是最簡單的方法。

app.get('/' + element + '/:id', function(request, response, next) {
  let id = request.params.id;
  pool.query('SELECT * FROM ' + element + ' WHERE id = ?', id, (error, result) => {
    if (error) throw error;
    let options = {
      dotfiles: 'deny',
      headers: {
        'x-timestamp': Date.now(),
        'x-sent': true,
        'x-result-message': result.name // your custom header here
      }
    }
    let fileName = path.resolve(__dirname + '/../html/index.html')
    response.sendFile(fileName, options, function(err) {
      if (err) {
        next(err)
      } else {
        console.log('Sent:', fileName)
      }
    });
  });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM