Sequelize v4 | 实例方法不起作用

我一直在尝试更新我的代码,以适应Sequelize的最新升级。 我在用着

  • 续集:4.2.0

  • 节点:7.10.0

  • NPM:5.0.3

问题

我似乎无法正确设置用户模型。 我已经实现了一些似乎没有工作的实例方法。 该类不能正确实例化。

user.js的

module.exports = (sequelize, DataTypes) => { var User = sequelize.define('user', { attributes .... }, { hooks: { afterCreate(user, options) { user.testFunction(); } } }); // Instance methods User.prototype.testFunction = () => { this.firstName = "John"; } // Class methods User.anotherTestFunction = () => { User.findOne().then(() => doSomething()); } return User; } 

index.js

 var sequelize; sequelize = new Sequelize(config.DATABASE_URL); db.User = sequelize.import(__dirname + '/user.js'); db.sequelize = sequelize; db.Sequelize = Sequelize; module.exports = db; 

usersController.js

 var db = require('../path/to/db'); function create_post_function = (req, res) => { var body = getBody(); db.User.create(body).then(user => respondSuccess()); } 

现在,除了实例方法外,这个例子中的所有东西都是完美的。

我不断得到TypeError: Cannot set property 'firstName' of undefined

出于某种原因,它没有将实例方法应用于sequelize Model。 很奇怪,但我可能做了一些明显错误的事情,而没有看到它。

真的很感谢任何帮助!

你不能使用箭头function,因为他们不能访问this 。 尝试像这样写他们 –

 // Instance methods User.prototype.testFunction = function testFunction() { this.firstName = "John"; } // Class methods User.anotherTestFunction = function anotherTestFunction() { User.findOne().then(() => doSomething()); }