在 Sequelize 中创建包含与 hasOne 关联的行

Create row including association with hasOne in Sequelize

我正在为 Node.js 测试不同的 ORM,但遇到了这个错误:

Possibly unhandled TypeError: undefined is not a function
@ person.setUser(user);

尝试了 person.setUsersuser.setPersonuser.setPeople。还尝试 console.log 找到函数,但没有成功。

我做错了什么?

var config = require('./config.json');
var Sequelize = require('sequelize');
var sequelize = new Sequelize(config.connection, {
    define: {
        freezeTableName: true,
        underscoredAll: true,
        underscored: true
    }
});

var Person = sequelize.define('person', {
    first_name: Sequelize.STRING,
    last_name: Sequelize.STRING
});

var User = sequelize.define('user', {});

Person.hasOne(User);

sequelize.sync().then(run);

function run() {
    var person = Person.create({ first_name: 'Markus', last_name: 'Hedlund' });
    var user = User.create();

    person.setUser(user);
}

我想你想做的是

Person.create({ first_name: 'Markus', last_name: 'Hedlund' }).then((person) => {
      User.create().then((user) => {
           person.setUser(user);
      });
});

虽然 dege 的答案是正确的,但我会用一个很好的承诺链来写它:

Person.create({ first_name: 'Markus', last_name: 'Hedlund' })
.bind({})
.then(function(person){
    this.person = person;
    return User.create()
})
.then(function(user){
    return this.person.setUser(user);
});