sequelize从孩子那里找到父表

时间:2017-05-10 13:39:57

标签: find sequelize.js parent

我想找到一个对象的父表信息。

我有User hasMany Book Book具有编写器并分配给用户ID。 书有类型,就像幻想,浪漫,历史,科幻小说等等。

所以我想找出科幻小说类型的书,但不仅仅是为了那个,我还想要作家,即用户。

我怎样才能找到这本书的作者在哪里只为书籍提供条件?似乎包括'在Book.findAll(包括:用户)中不起作用;这告诉我,include仅用于查找子表而不是父表。

以下是用户

的一些代码
const User = sequelize.define('User', {
    id: { type: DataTypes.STRING(6), field: 'ID', primaryKey : true }
}
associate: function(models) {
        User.hasMany(models.Book, { foreignKey: 'userId' });
}

并预订

const Book = sequelize.define('Book', {
    id: { type: DataTypes.STRING(6), field: 'ID', primaryKey: true }, // primary key
    userId: { type: DataTypes.STRING(6), field: 'USER_ID', primaryKey: true }
type: { type: DataTypes.STRING(20), field: 'TYPE'

}

本书有更多的子表,我试图在包含中找到这些附加信息,所以我想我真的需要从Book.findAll(...)中找到 而不是User.findAll(包括:Book)。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我认为我犯了一个错误。

我一改变了

userId: { type: DataTypes.STRING(6), field: 'USER_ID', primaryKey: true }

userId: { type: DataTypes.STRING(6), field: 'USER_ID' }

include正在为belongsTo工作;它从孩子那里找到了父母。 如果在模型中声明了多个主键,那么Sequelize似乎对关系有一些问题......

如果有人认为这可以解决您的问题,请分享回复,以便我对此更加肯定。

感谢。