摘要:所有鉤子函數(shù)調(diào)用時(shí),為對(duì)應(yīng)的實(shí)例,所以你可以訪問到與之相關(guān)的任何東西。對(duì)于所有鉤子,你可以添加一個(gè)額外的參數(shù)到鉤子函數(shù)中。這個(gè)問題的原因是,對(duì)象僅僅在頂級(jí)鉤子函數(shù)的作用域內(nèi)是有效的,而在回調(diào)中會(huì)有各種不同的值。
譯者:飛龍
來源:Model Hooks
如果你想要監(jiān)聽發(fā)生在模型實(shí)例上的事件,你可以附帶一個(gè)函數(shù),它會(huì)在發(fā)生時(shí)調(diào)用。
現(xiàn)在支持下面這些事件:
afterLoad:(無參數(shù))加載和準(zhǔn)備所用實(shí)例之后;
afterAutoFetch:(無參數(shù))自動(dòng)獲取關(guān)聯(lián)(如果有的話)之后,無論有沒有關(guān)聯(lián)都會(huì)觸發(fā);
beforeSave:(無參數(shù))嘗試保存之前;
afterSave:(bool success)保存之后;
beforeCreate:(無參數(shù))嘗試保存新的實(shí)例之前(優(yōu)先于beforeSave);
afterCreate:(bool success)保存新的實(shí)例之后;
beforeRemove:(無參數(shù))嘗試刪除實(shí)例之前;
afterRemove:(bool success)刪除實(shí)例之后;
beforeValidation:(無參數(shù))在所有驗(yàn)證之前,優(yōu)先于beforeCreate和beforeSave。
所有鉤子函數(shù)調(diào)用時(shí),this為對(duì)應(yīng)的實(shí)例,所以你可以訪問到與之相關(guān)的任何東西。
對(duì)于所有before*鉤子,你可以添加一個(gè)額外的參數(shù)到鉤子函數(shù)中。這個(gè)函數(shù)用來告訴鉤子應(yīng)該繼續(xù)執(zhí)行下去還是中斷。你或許已經(jīng)從Express的工作流中熟悉了這一點(diǎn)。下面是一個(gè)示例:
var Person = db.define("person", { name : String, surname : String }, { hooks: { beforeCreate: function (next) { if (this.surname == "Doe") { return next(new Error("No Does allowed")); } return next(); } } });
這個(gè)工作流允許你在調(diào)用next之前執(zhí)行異步的操作。如果你不打算使用next就不要把它定義為參數(shù),否則會(huì)阻塞工作流。
常見問題一個(gè)常見問題涉及到在鉤子內(nèi)部的嵌套回調(diào)中訪問this。這個(gè)問題的原因是,this對(duì)象僅僅在頂級(jí)鉤子函數(shù)的作用域內(nèi)是有效的,而在回調(diào)中會(huì)有各種不同的值。要解決這一問題,可以創(chuàng)建一個(gè)對(duì)象保存this的引用,并且在回調(diào)中用它來訪問模型的屬性。
示例
var Person = db.define("person", { name : String, surname : String }, { hooks: { beforeCreate: function (next) { var _this = this; checkName(this, function(err, result)) { if(err) return next(err); _this.name = result.name; _this.surname = result.surname; next(); } } } });
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/17506.html
摘要:譯者飛龍來源在連接之后,你可以使用連接對(duì)象來定義你的模型。你需要指定模型的名稱,一個(gè)用于描述的屬性和一些可選的選項(xiàng)。在這個(gè)例子中,有個(gè)模型方法叫做。接收的第一個(gè)對(duì)象第二個(gè)參數(shù)被稱為屬性對(duì)象,它定義了所有的屬性。在屬性修改時(shí)自動(dòng)保存模型。 譯者:飛龍 來源:Defining Models 在連接之后,你可以使用連接對(duì)象(db)來定義你的模型。你需要指定模型的名稱,一個(gè)用于描述的屬性和...
摘要:譯者飛龍來源同步是一項(xiàng)功能方法,可以在數(shù)據(jù)庫里為你的模型和關(guān)聯(lián)創(chuàng)建所需的表來工作?,F(xiàn)存的表并不會(huì)被替換,它們只會(huì)在不存在的時(shí)候被創(chuàng)建。刪除也有兩種方式。從指定模型中刪除所有表和為模型創(chuàng)建表 譯者:飛龍 來源:Syncing and dropping models 同步是一項(xiàng)功能方法,可以在數(shù)據(jù)庫里為你的模型和關(guān)聯(lián)創(chuàng)建所需的表來工作?,F(xiàn)存的表并不會(huì)被替換,它們只會(huì)在不存在的時(shí)候被創(chuàng)建...
閱讀 3669·2021-11-24 09:39
閱讀 1276·2021-09-30 09:48
閱讀 3258·2021-09-09 11:51
閱讀 2883·2021-09-08 10:41
閱讀 1329·2019-08-30 14:06
閱讀 2798·2019-08-30 14:01
閱讀 874·2019-08-29 17:11
閱讀 3169·2019-08-29 15:37