2015-02-24 80 views
2

與hasOne關聯我測試不同的ORM對Node.js和受陷在這樣的錯誤:創建行包括Sequelize

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

回答

3

我想你想要做的是

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

當然,這解決了這個問題,謝謝! :)希望這是更清晰的文檔 – Znarkus 2015-02-25 07:37:05

+0

是不是有一種方法來處理'Person.create({first_name:'Markus',last_name:'Hedlund',{user:{/ * data * /}}}'? – julestruong 2016-10-14 09:27:07

2

雖然的哥的回答是正確的我會是一個不錯的諾言鏈寫:

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