2017-04-17 7 views
0

モデルの中に関数を定義しようとすると、共通の関数セットを持つことができます。私はsequelizeのORMを使用してmySqlのstatics関数(mongooseのような)をsequelizeを使って定義します

"use strict"; 

module.exports = function(sequelize, DataTypes) { 
    var AttendantUser = sequelize.define('AttendantUser', { 
    user_id : { 
     type : DataTypes.CHAR(36), 
     defaultValue : DataTypes.UUIDV4, 
     primaryKey : true 
    }, 
    mobile : { 
     type : DataTypes.BIGINT, 
     allowNull : false, 
     unique : true 
    }, 
    reset_code : { 
     type : DataTypes.INTEGER, 
     allowNull : true, 
     defaultValue : '0000' 
    } 
    },{ 
    freezeTableName : true, 
    paranoid : true 
    }); 


AttendantUser.usernameInUse = function (callback) { 
console.log("fefe"); 
callback(null, "hello"); 
} 
    return AttendantUser; 
}; 

私は関数であるusernameInUse使用しようとすると、私は取得エラーnodejsています。 エラー:mModels.usernameInUseは関数ではありません

+0

フックをチェックアウトしましたか? http://docs.sequelizejs.com/en/v3/docs/hooks/ –

+0

'mModels'変数とは何ですか? – piotrbienias

答えて

1

これは、classMethodsのためのものです。 Sequelize documentation pageのオプション「[options.classMethods]」を探します。

これはあなたのコードは次のように見なければならないものです:がデータベースとを同期した後

"use strict"; 

module.exports = function(sequelize, DataTypes) { 
    var AttendantUser = sequelize.define('AttendantUser', { 
    user_id : { 
     type : DataTypes.CHAR(36), 
     defaultValue : DataTypes.UUIDV4, 
     primaryKey : true 
    }, 
    mobile : { 
     type : DataTypes.BIGINT, 
     allowNull : false, 
     unique : true 
    }, 
    reset_code : { 
     type : DataTypes.INTEGER, 
     allowNull : true, 
     defaultValue : '0000' 
    } 
    },{ 
    freezeTableName : true, 
    paranoid : true, 
    classMethods : { 
     usernameInUse = function (callback) { 
      console.log("fefe"); 
      callback(null, "hello"); 
      return this; 
     } 
    } 
    }); 

、あなたはあなたがそのようになどの静的メソッドを呼び出すことができます

AttendantUser = require('/path/to/attendant-user'); 

でモデルをインポートすることができます:

AttendantUser.usernameInUse(() => {console.log('callback called.');}) 
関連する問題