首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取包含数组所有ids的数据。

获取包含数组所有ids的数据。
EN

Stack Overflow用户
提问于 2020-11-04 13:43:11
回答 1查看 123关注 0票数 0

我试图制作一个过滤歌曲,我从客户端检索了一个类型id数组,我这样做是为了从一个id获取所有音频:

代码语言:javascript
复制
Audio.findAll({
  include: [{
    model: db.Genres,
    as: "genres",
    where: {
      id: {
        [Op.and]: [1]
      }
    },
  }]
})

但是我需要从类型/情绪数组中获取包含所有it的所有音频,也需要按类型it和情绪it过滤音频,但我不知道如何制作它,知道吗?(一首歌可以有多种体裁/情绪)

宋体模型

代码语言:javascript
复制
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', foreignKey: 'id_audio', as: 'moods'})
}

AudioGenreModel

代码语言:javascript
复制
const AudioGenres =  sequelize.define('AudioGenres', {
  id_audio: {
    type: DataTypes.INTEGER(11),
    allowNull: false,
    primaryKey: true,
    references: {
      model: 'Audio',
      key: 'id'
    }
  },
  id_genre: {
    type: DataTypes.INTEGER(11),
    allowNull: false,
    primaryKey: true,
    references: {
      model: 'Genres',
      key: 'id'
    }
})
AudioGenres.associate = function(models) {
  AudioGenres.belongsTo(models.Audio, {foreignKey: 'id_audio'})
  AudioGenres.belongsTo(models.Genres, {foreignKey: 'id_genre'})
};

AudioMoodModel

代码语言:javascript
复制
const AudioMoods =  sequelize.define('AudioMoods', {
  id_audio: {
    type: DataTypes.INTEGER(11),
    allowNull: false,
    primaryKey: true,
    references: {
      model: 'Audio',
      key: 'id'
    }
  },
  id_mood: {
    type: DataTypes.INTEGER(11),
    allowNull: false,
    primaryKey: true,
    references: {
      model: 'Mods',
      key: 'id'
    }
})
AudioMoods.associate = function(models) {
  AudioMoods.belongsTo(models.Audio, {foreignKey: 'id_audio'})
  AudioMoods.belongsTo(models.Mods, {foreignKey: 'id_mood'})
};

情绪与体裁模型

代码语言:javascript
复制
const Moods =  sequelize.define('Moods', {
  name: {
    type: DataTypes.STRING(255),
    allowNull: false
  },
})
Moods.associate = function(models) {
  Moods.belongsToMany(models.Audio, {through: 'AudioMoods', foreignKey: 'id_mood', as: 'audios'})
}

const Genres =  sequelize.define('Genres', {
  name: {
    type: DataTypes.STRING(255),
    allowNull: false
  },
})
Genres.associate = function(models) {
  Genres.belongsToMany(models.Audio, {through: 'AudioGenres', foreignKey: 'id_genre', as: 'audios'})
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-04 15:12:39

我认为您应该在两个include选项中添加所有条件和操作符,如下所示:

代码语言:javascript
复制
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}]
    },
  }]
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64681231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档