我无法更有效/更清晰地插入和查找用户。我有一个用户表,我有:id,mail,password,billing_address(外键),shipping_address(外键)现在,它创建用户然后单独创建地址,然后更新user.billing_address和user。 shipping_address,地址为id。
现在我的问题是我可以创建用户的类方法,其中我有示例user.create和user.find来完成这项工作。
db.user = require('../models/user')(sequelize, Sequelize);
db.address = require('../models/addresses')(sequelize, Sequelize);
db.user.hasMany(db.address);
db.address.belongsTo(db.user);
模型定义如下:用户
module.exports = function(sequelize, DataTypes) {
const User = sequelize.define('User', {..attributes..}, {
paranoid: true,
underscored: true,
hooks: {
beforeCreate: function(user) {
try
{
if(!user.changed('password')) return sequelize.Promise.reject('not modified');
var hash = bcrypt.hashSync(user.password);
user.setDataValue('password', hash);
}
catch(e)
{console.error("Big one");}
},
}
});
return User;
};
地址:
module.exports = function(sequelize, DataTypes) {
const Addresses = sequelize.define('Addresses', {..attributes..}, {
underscored: true,
});
return Addresses;
};
我想要这样的事情来完成:db.user.create() - 它应该为用户创建一个用户和地址,并为对象提供所有信息。 db.user.find() - 它应该找到一个具有用户ID的用户,并从该用户返回所有地址,而不仅仅是他们的id。
我不知道你怎么会在续集中这样做但是这种事情对于sworm来说非常简单
var person = db.model({table: 'people'});
var address = db.model({table: 'addresses'});
var bob = person({
name: 'bob',
address: address({
address: 'Fremantle'
})
});
bob.save()
这将导致:
-------- people ----------
| id | name | address_id |
--------------------------
| 11 | bob | 22 |
--------------------------
------- addresses ------
| id | address |
------------------------
| 22 | Fremantle |
------------------------