微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取包含数组的所有ID的数据

如何解决获取包含数组的所有ID的数据

我正在尝试制作过滤歌曲,我有一系列从客户端检索的流派ID,我这样做是为了从一个ID中获取所有音频:

Audio.findAll({
  include: [{
    model: db.Genres,as: "genres",where: {
      id: {
        [Op.and]: [1]
      }
    },}]
})

但是我需要从流派/情绪数组中获取包含所有ID的所有音频,还希望通过流派ID和情绪ID来过滤音频,但是我不知道该如何制作,任何想法? (一首歌可以有多种流派/情绪)

歌曲模型

const Audio =  sequelize.define('Audio',{
  id: {
    autoIncrement: true,type: DataTypes.INTEGER(30),allowNull: false,primaryKey: true
  },name: {
    type: DataTypes.STRING(255),allowNull: false
  },})
Audio.associate = function(models) {
  Audio.belongsToMany(models.Genres,{through: 'AudioGenres',foreignKey: 'id_audio',as: 'genres'})
  Audio.belongsToMany(models.Moods,{through: 'AudioMoods',as: 'moods'})
}

AudioGenreModel

const AudioGenres =  sequelize.define('AudioGenres',{
  id_audio: {
    type: DataTypes.INTEGER(11),primaryKey: true,references: {
      model: 'Audio',key: 'id'
    }
  },id_genre: {
    type: DataTypes.INTEGER(11),references: {
      model: 'Genres',key: 'id'
    }
})
AudioGenres.associate = function(models) {
  AudioGenres.belongsTo(models.Audio,{foreignKey: 'id_audio'})
  AudioGenres.belongsTo(models.Genres,{foreignKey: 'id_genre'})
};

AudioMoodModel

const AudioMoods =  sequelize.define('AudioMoods',id_mood: {
    type: DataTypes.INTEGER(11),references: {
      model: 'Mods',key: 'id'
    }
})
AudioMoods.associate = function(models) {
  AudioMoods.belongsTo(models.Audio,{foreignKey: 'id_audio'})
  AudioMoods.belongsTo(models.Mods,{foreignKey: 'id_mood'})
};

情绪和流派模型

const Moods =  sequelize.define('Moods',{
  name: {
    type: DataTypes.STRING(255),})
Moods.associate = function(models) {
  Moods.belongsToMany(models.Audio,foreignKey: 'id_mood',as: 'audios'})
}

const Genres =  sequelize.define('Genres',})
Genres.associate = function(models) {
  Genres.belongsToMany(models.Audio,foreignKey: 'id_genre',as: 'audios'})
}

解决方法

我想您应该在两个这样的include选项中的AND运算符中添加所有条件:

Audio.findAll({
  include: [{
    model: db.Genres,as: "genres",where: {
      [Op.and]: [{ id: 1},{ id: 3},{ id: 2}]
    },},{
    model: db.Moods,as: "moods",where: {
      [Op.and]: [{ id: 4},{ id: 5},{ id: 6}]
    },}]
})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。