在Sequelize Js

时间:2019-07-01 06:34:52

标签: javascript mysql node.js express sequelize.js

在尝试从主表查询时,我试图从关联表中查找条目数组。

当我尝试查询时,当前在关联表下只有一个条目。 例如,我得到如下输出。

{
    "id": 37,
    "name": "Mr Tom",
    "books": {
        "id": 1278,
        "name": "Book 1",
    }
}

如您所见,books部分作为数组中的对象出现。我希望它是一堆书。

以下是我用来查询数据的代码。

const authorId = req.params.id;

const AuthorDetails = await AUTHOR.findOne({
  attributes: [
    'id',
    'name',
  ],
  where: {
    id: authorId,
  },
  include: [
    {
      model: BOOKS,
      attributes: ['id','name'],
    },
  ],
  raw: true,
  nest: true,
});
  

作者与书籍之间的关系是一对多的。哪里一个   一本书只能有一位作者,但一位作家可以有很多本书。   定义如下。

AUTHORS.hasMany(BOOKS);
BOOKS.belongsTo(AUTHORS);

edit:我注意到,当我删除条件id:authorId时,它会复制author对象并给出一本唯一的book。例如

[
    {
        "id": 37,
        "name": "Mr Tom",
        "books": {
            "id": 1278,
            "name": "Book 1",
        }
    },
    {
        "id": 37,
        "name": "Mr Tom",
        "books": {
            "id": 1279,
            "name": "Book 2",
        }
    }
]

0 个答案:

没有答案