How can I use Y.mojito.models in middleware?

How can I use Y.mojito.models in middleware?

Problem

I’m using nodejs with the mojito mvc framework.

Do I have access to some global variables from middleware? How can I use Y.mojito.models in middleware?

// ./middleware/mymiddleware.js
module.exports = function (req, res, next) {

    // How to use Y?
    //Y.log('fails');
    //Y.mojito.models['MyModel'].fetch(function(err, data) {
    //    next();
    //});
};
Problem courtesy of: koalabruder

Solution

I strongly recommend not to try to do that. Those are express middleware, they are suppose to do a quick job, sometimes async job but generally, if the request is meant to be processed by mojito dispatcher engine, you should not try to access runtime components in a middleware.

That been said, there is an internal API (that again I strongly recommend not to use) that will give you access to the global Y which holds all the YUI modules at the server side. Something like this:

module.exports = function (config) {
   // then `config.Y.mojito.models['MyModel'].fetch()` is available here
   return function (req, res, next) {
      next();
   }
};

Aside from that, if what you’re looking for is a way to share models, or expose global models, you should look at mojito-models-addon, expose method.

Again, the config.Y thing is private and we might change that at any time.

update: in mojito there are two types of middleware, the traditional express middleware and the mojito middleware, which will have to be prefixed with mojito-, and these are the one that should expose a function that receives config and returns a transitional express middleware. Without the prefix, it will just be called per requests without preparation.

Solution courtesy of: caridy

Discussion

Leave a Reply

Your email address will not be published. Required fields are marked *