我有三个表,结构描述如下:
用户表包含字段: id
、 name
、 date_created
库表包含字段: id
、 capacity
、 date_created
、 user_id
user_id 是 User 表的外键,Library 的每个实例都必须属于一个用户。
最后一个表是 Books 表,其中包含以下字段: id
、 status
、 date_created
、 library_id
。
library_id 是 Library 表的外键,一本书的每个实例都必须属于一个 Library。
我想要实现的是一种查询数据库中属于用户且状态为例如的书籍的所有实例的方法:borrowed
最佳答案
要首先实现连接,您需要在 Sequelize 模型之间建立关联。
所以,在你的情况下
models.Library.hasMany(models.Books, {
foreignKey: 'library_id'
})
models.Books.belongsTo(models.Library, {
foreignKey: 'library_id'
})
models.Library.belongsTo(models.User, {
foreignKey: 'user_id'
})
models.Books.hasMany(models.Library, {
foreignKey: 'user_id'
})
在这里,
models
是一个 Sequelize 实例。您可以在 http://docs.sequelizejs.com/manual/tutorial/associations.html 中找到有关 Sequelize 关联的更多信息
Now, To find all instances of Books that belongs to User
models.User.findAll({
include: [{
model: models.Library,
required: true, // do an INNER Join
include: [{
model: models.Books,
required: true,
where: {
status: 'borrowed'
}
}] t
}],
where: {
user_id: 'some_user_id'
}
})
关于postgresql - 如何在 Sequelize 中实现 JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50563463/