I'm new to JavaScript and am currently unable to wrap my head around Promise and how to retrieve data from them. I am using Express and Objection and have a route where I'd like to pull some data from the database und pass it to express' res.render() function.
So I did a lot of searching and found few examples but I was not able to incorporate what I found into my app.
//search.js ... boilerplate stripped
router.all('/', function (req, res, next)
{
Equipment.query().select().then(equip =>
{
return equip;
});
res.render('search/search', {title: 'Search', data: {formdata: req.body, equipment: "equipmentdata here"}});
});
module.exports = router;
Could anybody point me in the right direction? I did understand that I can't get data from a Promise like I would get from a function call. Also I can't imagine that it is not possible to use this ORM-Tool (which seems to only work with Promises) and retrieve data from the database and output it to the user. (Yes I had a look at the Objection Example but this is not using views.)
I figured something out. Might not be the best solution but I decided to share what I came up with. Maybe someone runs into the same problem.
First: I define the route and a set of functions to handle specific parts:
Second: As every function I use the provided function params (which every of my functions has) to store the retrieved data in the request instance.
One might argue if it is better to store it in the response or request instance.
Third: The last function for the route handles what the user get (redirect / render).
So first I handle (in multiple small steps) the required actions to retrieve data and store some information. On the last step I can do some modifications to the data, put it into a structure (easier handling in the template engine and consistent for every route I have).
For me this was the solution which simply worked best.