Sails.js - Get async data from an EJS file

2019-09-06 03:56发布

问题:

Are there a good way to get async data from an EJS file?
Sails.js only have async methods to get data from a database.

I have a collection of Pages with their associated content Values. In some cases I want to get a specific Value from another Page (e.g.: in a related page module, a navigation module...). And I need to do that server side, to keep the front-end part SEO friendly.

The easier way should be to retrieve all the Pages and Values inside the controller, and then expose a function to my EJS to get the specific data I need. But I really don't want to retrieve each time all the data from a collection.

I'm working on a CMS so I would avoid creating a new controller/view for each specific cases that I will have.

EDIT:
It seems there is no good way to do that, so I reworked my controller to make it a bit more intelligent. It solve my problem for now.

回答1:

Assuming I understand you correctly....

data is sent to the view by passing an object into the view funciton

return res.view({data: "important data"});

I'm guessing that you want to call a method for some specific data mid-render. Because having all the data ready on the res.view() call is too slow. As far as I know this is not possible. That would almost certainly be "blocking" code.

Best option I could recommend is to grab specific data using ajax on the client after page load. One of the best features of using sails :)