think.http.base
繼承自 think.base 類,該類為含有 http 對象處理時的基類。middleware, controller, view 類都繼承自該類。
export default class extends think.http.base {
/**
* 初始化方法,實(shí)例化時自動被調(diào)用,不要寫 constructor
* @return {}
*/
init(){
}
}
module.exports = think.Class(think.http.base, {
init: function(){
}
});
封裝的 http 對象,包含的屬性和方法請見 API -> http。
name
{String} 配置名稱value
{Mixed} 配置值讀取或者設(shè)置配置,value 為 undefined
時為讀取配置,否則為設(shè)置配置。
該方法不僅可以讀取系統(tǒng)預(yù)設(shè)值的配置,也可以讀取項(xiàng)目里定義的配置。
注
:不可將當(dāng)前請求的用戶信息作為配置來設(shè)置,會被其他用戶給沖掉。
export default class extends think.controller.base {
indexAction(){
//獲取配置值
let value = this.config("name");
}
}
controller
{Object | String} controller實(shí)例action
{String} action名稱return
{Promise}調(diào)用 controller 下的 action,返回一個 Promise。自動調(diào)用__before
和__after
魔術(shù)方法。
如果 controller 是字符串,則自動去尋找對應(yīng)的 controller。
//調(diào)用當(dāng)前模塊下controller里的action
export default class extends think.controller.base {
* indexAction(){
//調(diào)用user controller下的detail方法
let value = yield this.action("user", "detail");
}
}
//跨模塊調(diào)用controller里的action
export default class extends think.controller.base {
* indexAction(){
//調(diào)用admin模塊user controller下的detail方法
let value = yield this.action("admin/user", "detail");
}
}
name
{String} 緩存名稱value
{Mixed | Function} 緩存值options
{Object} 緩存配置,具體見緩存配置讀取或者設(shè)置緩存,value
為undefined
時是讀取緩存,否則為設(shè)置緩存。默認(rèn)緩存類型為file
。
export default class extends think.controller.base {
* indexAction(){
//獲取緩存
let value = yield this.cache("name");
}
}
當(dāng)參數(shù)value
為 function 時,表示獲取緩存,如果緩存值不存在,則調(diào)用該 function,將返回值設(shè)置緩存并返回。這樣避免在項(xiàng)目開發(fā)時要先判斷緩存是否存在,然后再從相關(guān)地方讀取值然后設(shè)置緩存的麻煩。
export default class extends think.controller.base {
* indexAction(){
//獲取緩存,緩存不存在時自動調(diào)用 function,并設(shè)置緩存
let value = yield this.cache("name", () => {
return this.model("user").select();
});
}
}
設(shè)置緩存并修改緩存類型:
export default class extends think.controller.base {
* indexAction(){
//設(shè)置緩存,緩存類型使用redis
yield this.cache("name", "value", {
type: "redis"
});
}
}
event
{String} 事件名稱data
{Mixed} 參數(shù)return
{Promise}執(zhí)行對應(yīng)的事件,一個事件包含若干個 middleware,會按順序執(zhí)行這些 middleware。
事件可以在配置config/hook.js
里定義,也可以通過 think.hook 來注冊。
export default class extends think.controller.base {
* indexAction(){
let result = yield this.hook("parse_data");
}
}
name
{String} 模型名稱options
{Object} 配置,具體見數(shù)據(jù)庫配置return
{Object} model實(shí)例獲取模型實(shí)例,默認(rèn)獲取當(dāng)前模塊下對應(yīng)模型的實(shí)例,也可以跨模塊獲取模型的實(shí)例。
export default class extends think.controller.base {
indexAction(){
//獲取當(dāng)前模塊下的 user model 的實(shí)例
let model = this.model("user");
//獲取admin模塊下 article model 的實(shí)例
let model1 = this.model("admin/article");
//獲取當(dāng)前模塊下的 test model 的實(shí)例,并且是 sqlite 的數(shù)據(jù)庫
let model2 = this.model("test", {
type: "sqlite" //設(shè)置數(shù)據(jù)庫類型為sqlite,更多參數(shù)見數(shù)據(jù)庫配置
})
}
}
name
{String} controller名稱return
{Object} controller實(shí)例獲取 Controller 的實(shí)例,如果 Controller 找不到,則報(bào)錯。
export default class extends think.controller.base {
indexAction(){
//獲取當(dāng)前模塊下 user controller 的實(shí)例
let controller = this.controller("user");
//獲取admin模塊下 user controller 的實(shí)例
let controller1 = this.controller("admin/user");
}
}
name
{String} service 名稱return
{Class}獲取對應(yīng)的 service。service 返回的可能是 class ,也可能直接是個對象,所以不會直接實(shí)例化。
export default class extends think.controller.base {
indexAction(){
//獲取對應(yīng)的service
let service = this.service("user");
//獲取service的實(shí)例
let instance = new service(...args);
//獲取admin模塊下的user service
let service1 = this.service("admin/user");
}
}
文檔地址:https://github.com/75team/www.thinkjs.org/tree/master/view/zh-CN/doc/2.0/api_think_http_base.md
更多建議: