Sequelize join和limit

时间:2015-04-06 21:38:10

标签: node.js postgresql sequelize.js

我正在尝试用Sequelize形成一个查询来加入并选择+限制。让我来说明问题:

我有多对多的关系:Book - Reader。读者可以有很多书,一本书可以有很多读者。

鉴于Book的ID,我想浏览其所有Reader。 这是我目前尝试过的,它有一些问题。首先,分页不起作用。其次,它仍会选择Book以及Reader的所有属性,当我只需要Reader时(我扔掉所有Book)。

/**
 * Get all Readers of a Book.
 *
 * @param {Number} bookId id of the book
 * @param {Number} limit number of readers to retrieve
 * @param {Number} offset number of readers to skip 
 * @return {Promise} contains an array of readers
 */
function getBookReaders(bookId, limit, offset) {
  return Book.findOne({
    id: bookId,
    include: [Reader],
    limit: 10,
    offset: 30
  }).then(function(book) {
    return book.readers;
  });
}

有关如何正确形成此查询的任何建议吗?

1 个答案:

答案 0 :(得分:0)

我不确定这是否真的有效,但将限制应用于您想要限制的模型是有意义的:

Book.findOne({
  id: bookId,
  include: [ { model: Reader, limit: 10, offset: 30 } ]
}).then(function(book) {
  return book.readers;
});