2013-04-05 70 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