gpt4 book ai didi

javascript - Sequelize - 在 SQL 中使用 2 个地址作为外键的用户模型

转载 作者:太空宇宙 更新时间:2023-11-04 01:52:53 24 4
gpt4 key购买 nike

我很难找到一种更有效/更干净的方式来插入和查找用户。我有一个用户表,其中有:id、邮件、密码、billing_address(外键)、shipping_address(外键)目前,它创建用户,然后单独创建地址,然后使用地址 ID 更新 user.billing_address 和 user.shipping_address。

现在我的问题是我可以创建一个用户的类方法,其中我有示例 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。

最佳答案

我不确定你会如何在 Sequelize 中做到这一点,但这种事情对于 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 |
------------------------

关于javascript - Sequelize - 在 SQL 中使用 2 个地址作为外键的用户模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49009313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com