Patrick
Patrick

Reputation: 6595

res.sendFile send static file + object

I have to serve a html file with express, but also want to send an object along with the response. How can i send both - the detail.html and the object 'car' - and how can i access it at the client side?

app.get('/unit/:id', function (req, res) {
console.log(req.params.id)
var car = {type:"Fiat", model:"500", color:"white"};
res.sendFile(__dirname + '/detail.html', car);
});

Upvotes: 3

Views: 4433

Answers (2)

user1695032
user1695032

Reputation: 1142

Not really sure about your current setup but you might want to restructure your express app a little. You need to define a view engine and use

res.render('someview', dataObject);

http://expressjs.com/en/api.html#res.render

with ejs:

app.set('view engine', 'ejs');  

route:

app.get('/', function(req, res) {  
  res.render('index', { title: 'The index page!' })
});

html:

<div>  
    <%= title %>
</div>  

Upvotes: 3

eltonkamami
eltonkamami

Reputation: 5190

res.sendFile has to set some special headers (Content-Disposition paired with a Content-Type) so the browser will understand that an attachment its comming and based on the file type and browser either show the save dialog or open the file

What you could do is send the car object as a json with res.json and in the frontend check that the json was fetched so you can hit a second endpoint which will trigger the download

Upvotes: 2

Related Questions