如何在Node.js中为sequelize.js添加自定义函数?
例如,我有一个客户机模型。 我想添加新功能“sendEmail” 该功能需要向一个客户端发送电子邮件,还是同时向多个客户端发送电子邮件如何在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
在哪里定义这些函数?使用所指出的
实例方法
在您的客户示例中:
// 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 () {..}