在使用Node.js的Sequelize ORM框架时,如果在查询时加上included表示要做join查询
例如
db.User.findAll({
include: [{
model: db.Message,
required: true
}]
})
.then((users) => {
res.json(users);
})
.error((error) => {
res.sendStatus(500);
});
但如果在一开始定义时没有加上hasMany、belongsTo就会出现
xxx is not aoociated to xxx 的错误讯息
Google了一会,看起来一定要先定义关係,才能做这种查询了,记得以前在JAVA用Hibernate也是一样的状况。
请问他们这样设计的原因为何?
有什麽替代方桉可以做无关係的join查询吗?
对象之间有关联关系,必须先定义好,然后ORM框架才会根据关系去找相关的数据。
比如说一个部门Department的对象,包含多个User对象,查询Department的时候可以把包含的User查询出来,如果没有定义关联关系,ORM不知道在数据库中两个表的关联字段,无法生成sql语句进行查询。