我正在尝试创建一个方法User.createRider()
,将规范化数据添加到UserAttribute列。
var sequelize = require('../database.js').sequelize,
Sequelize = require('../database.js').Sequelize,
UserAttribute = sequelize.define('userAttributes', {
key: Sequelize.STRING,
value: Sequelize.STRING,
}),
User;
UserAttribute.belongsTo(User);
User = sequelize.define('user', {},{
classMethods: {
createRider: function(params) {
newUser = User.create();
//this should be related to the user.
UserAttribute.create({key: 'somekey', value: 'somevalue'});
return newUser;
}
}
});
module.exports = User;
我的问题是我无法在用户完成之前创建UserAttribute模型,因为我需要User-model来关联userAttributes而我无法首先创建usermodel,因为我无法创建定义userAttribute之前的类方法。这似乎是一种常见的情况。怎么能解决这个问题。
答案 0 :(得分:1)
听起来像你可以先创建用户,然后在创建后者时将其id添加到userAttribute。像这样:
User = sequelize.define('user', {}, {
classMethods: {
// Returns a new user instance as a promise.
createRider: function(params) {
return User.create().then(function(user) {
return UserAttribute.create({
key: 'somekey',
value: 'somevalue',
userId: user.id
}).then(function() {
// Make sure this promise chain returns the user object, not the userAttribute object
return user;
});
});
}
}
});