[英]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.