Search code examples
javascriptnode.jsyuimiddlewaremojito

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


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();
    //});
};

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.