Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Node.js中为sequelize.js添加自定义函数?_Node.js_Sequelize.js - Fatal编程技术网

如何在Node.js中为sequelize.js添加自定义函数?

如何在Node.js中为sequelize.js添加自定义函数?,node.js,sequelize.js,Node.js,Sequelize.js,例如,我有一个客户机模型。 我想添加新功能“sendEmail” 该功能需要向一个客户端发送电子邮件,还是同时向多个客户端发送电子邮件 在哪里定义这些函数?使用所指出的实例方法 在您的客户示例中: // models/Client.js 'use strict'; module.exports = function(sequelize, DataTypes) { return sequelize.define('Client', { first_name: DataTypes.ST

例如,我有一个客户机模型。 我想添加新功能“sendEmail”

该功能需要向一个客户端发送电子邮件,还是同时向多个客户端发送电子邮件


在哪里定义这些函数?

使用所指出的
实例方法

在您的客户示例中:

// models/Client.js
'use strict';

module.exports = function(sequelize, DataTypes) {
  return sequelize.define('Client', {
    first_name: DataTypes.STRING,
    last_name: DataTypes.STRING,
  }, {
    instanceMethods: {
      getFullName: function() {
        return this.first_name + ' ' + this.last_name;
      }
    }
  });
};

我也遇到了同样的问题,对我来说,在
classMethods
对象中添加方法是有效的

// models/Client.js
'use strict';

module.exports = function(sequelize, DataTypes) {
  return sequelize.define('Client', {
    first_name: DataTypes.STRING,
    last_name: DataTypes.STRING,
  }, {
    classMethods: {
      getFullName: function() {
        return this.first_name + ' ' + this.last_name;
      }
    }
  });
};

sequelize的第4版已经改变了这一点,使用
instanceMethods
classMethods
的其他解决方案不再有效。看

新的做法如下:

const Model = sequelize.define('Model', {
    ...
});

// Class Method
Model.myCustomQuery = function (param, param2) {  };

// Instance Method
Model.prototype.myCustomSetter = function (param, param2) {  }

sequelize.define
中删除了
classMethods
instanceMethods
选项。Sequelize模型现在是ES6类。您可以像这样设置类/实例级方法

旧的

新的


可能您正在寻找:否。这是仅在一个实例(行)上运行方法。但classMethods用于全局模型。我需要Client.FindAll(…).sendmail…||没有记录我是如何使classMethods处理FindAllth返回的行的。这个答案应该是可以接受的,因为这是添加类方法和实例方法的新方法。从模型外部访问时,
myCustomSetter
未定义的原因是什么?我有这个问题。有什么提示吗?它是一个实例方法,而不是类方法,因此您必须拥有模型的实例才能访问它@RameshPareekthanks@Yehonatan. 是什么原因导致即使在使用new关键字初始化之后,我也无法访问这些方法?Link已失效@jlh
const Model = sequelize.define('Model', {
    ...
}, {
    classMethods: {
        associate: function (model) {...}
    },
    instanceMethods: {
        someMethod: function () { ...}
    }
});
const Model = sequelize.define('Model', {
    ...
});

// Class Method
Model.associate = function (models) {
    ...associate the models
};

// Instance Method
Model.prototype.someMethod = function () {..}