2013-04-05 65 views
0

我正在使用mojito mvc框架的nodejs。如何在中间件中使用Y.mojito.models?

我可以从中间件访问一些全局变量吗?我如何在中间件中使用Y.mojito.models?

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

回答

2

我强烈建议不要尝试这样做。这些是快速中间件,他们假设要做一个快速的工作,有时候是异步工作,但通常,如果请求是由mojito dispatcher引擎处理的,则不应该尝试访问中间件中的运行时组件。

这就是说,有一个内部API(我强烈建议不要使用),这将允许您访问全局Y,该全局Y保存服务器端的所有YUI模块。事情是这样的:

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

除此之外,如果你正在寻找的是分享模式,或接触全球车型的方式,你应该看看莫吉托的模型,插件,expose方法。

此外,config.Y的东西是私人的,我们可能会随时更改。

更新:在莫吉托有两种类型的中间件,传统express中间件和莫吉托中间件,这将有与mojito-为前缀,这些都是应该公开接收config和返回功能的一个过渡express中间件。如果没有前缀,只会在没有准备的情况下按每个请求调用。

+0

我试过了。但是返回的函数永远不会被调用。函数“module.exports”被用作中间件。我按照以下方式对其进行了配置:http://developer.yahoo.com/cocktails/mojito/docs/topics/mojito_extensions.html#middleware – koalabruder 2013-04-05 22:54:22

+0

如果我使用文件夹“{app-dir}/middleware”并用“mojito-”作为文件的前缀。 – koalabruder 2013-04-06 12:05:36