sequelize 多表连接
时间: 2023-09-10 08:14:26 浏览: 46
Sequelize 是一个 Node.js ORM(Object-Relational Mapping)库,它支持多种数据库,包括MySQL, PostgreSQL, SQLite 和 MSSQL。 在 Sequelize 中,多表连接可以使用以下方式完成。
1.一对一连接
在 Sequelize 中,一对一连接使用belongsTo 和hasOne方法来建立。例如,我们有两个表,一个是 user表,一个是 profile表,每个用户都有一个唯一的 profile。我们可以这样定义:
```
const User = sequelize.define('user', {
name: Sequelize.STRING
});
const Profile = sequelize.define('profile', {
birthday: Sequelize.DATE
});
User.hasOne(Profile);
Profile.belongsTo(User);
```
这将创建一个外键profileId在User表中,并且在Profile表中将创建一个外键userId。
2.一对多连接
一对多连接可以使用hasMany 和belongsTo方法来完成。例如,我们有两个表,一个是 user表,一个是 post表,一个用户可以有多篇文章。我们可以这样定义:
```
const User = sequelize.define('user', {
name: Sequelize.STRING
});
const Post = sequelize.define('post', {
title: Sequelize.STRING,
content: Sequelize.TEXT
});
User.hasMany(Post);
Post.belongsTo(User);
```
这将在Post表中创建一个外键userId。
3.多对多连接
多对多连接需要使用sequelize的belongsToMany方法,在 Sequelize 中,我们需要创建一个中间表来保存关联信息。例如,我们有两个表,一个是 user表,一个是 tag表,一个用户可以有多个标签,一个标签可以有多个用户。我们可以这样定义:
```
const User = sequelize.define('user', {
name: Sequelize.STRING
});
const Tag = sequelize.define('tag', {
name: Sequelize.STRING
});
const UserTag = sequelize.define('userTag', {});
User.belongsToMany(Tag, { through: UserTag });
Tag.belongsToMany(User, { through: UserTag });
```
这将在UserTag表中创建两个外键,userId和tagId。
以上就是 Sequelize 多表连接的基本用法。