在 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.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);
}
我想你想做的是
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);
});
我正在为 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);
}
我想你想做的是
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);
});