【问题标题】:Create row including association with hasOne in Sequelize在 Sequelize 中创建包括与 hasOne 关联的行
【发布时间】:2015-04-26 07:59:33
【问题描述】:

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

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

试过person.setUsers、user.setPerson 和user.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);
}

【问题讨论】:

    标签: mysql node.js orm sequelize.js


    【解决方案1】:

    我想你想做的是

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

    【讨论】:

    • 当然,解决了,谢谢! :) 希望这在文档中更清楚
    • 没有办法处理Person.create({ first_name: 'Markus', last_name: 'Hedlund', {user: { /* data */ }} } 吗?
    【解决方案2】:

    虽然 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);
    });
    

    【讨论】:

      猜你喜欢
      • 2016-06-11
      • 2013-10-05
      • 1970-01-01
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多