极限和偏移量与包括在内

时间:2018-08-30 16:54:40

标签: sequelize.js

我有2个模型,国家/地区,城市。

它们彼此关联。城市属于国家。现在,我想做的就是在一个国家/地区查询中获取城市列表以及分页的限制和偏移(如果可能)。

如果我在下面进行操作,它将列出一个国家内的所有城市。我需要做的是能够使用限制和偏移参数限制城市。

Country.findById(1, {
  include: [
    { 
      model: City,
      as: 'cities'
    }
  ]
});

国家型号

module.exports = (sequelize, DataTypes) => {
    let Country = sequelize.define('Country', {
        id: {type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true},
        code: {type: DataTypes.STRING, allowNull: false, unique: true },
        name: DataTypes.STRING
    });
    Country.associate = (models) => {
        Country.hasMany(models.City, {as: 'cities'});
    };
    return Country;
}

城市模型

module.exports = (sequelize, DataTypes) => {
    let City = sequelize.define('City', {
        id: {type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true},
        name: {type: DataTypes.STRING, allowNull: false, unique: true},
    });

    City.associate = (models) => {
        City.belongsTo(models.Country, {as: 'country'});
    };

    return City;
}

2 个答案:

答案 0 :(得分:2)

Country.findById(1, {
  include: [
    { 
      model: City,
      as: 'cities',
      limit: 1
      attributes: ["id", "countryId", "name"]
    }
  ]
});

这将起作用,但是需要选择“ countryId”,否则会出现此错误

  

https://github.com/sequelize/sequelize/issues/7514

您也可以从这里参考。

  

https://github.com/sequelize/sequelize/issues/4772

答案 1 :(得分:0)

您在这里:

Country.findById(1, {
  include: [
    { 
        attributes : ["id", "countryId", "name"]     
        model: City,
        as: 'cities' ,
        separate: true,
        offset: 5, // <--- OFFSET
        limit: 5 // <--- LIMIT
    }
  ]
});

更多详细信息: DO READ