Исключить атрибуты первичного ключа из запроса продолжения

0

У меня есть запрос на продолжение из нескольких таблиц, соединенных вместе. Мне нужно сгруппировать их по вложенной модели include но запрос sequelize каждый раз выдает первичный ключ, даже если я упоминаю атрибуты как: attributes:[].

Однако attributes:[] работает для моделей вложенных include.

  • 0
    Похоже, идентификатор добавлен, потому что Sequelize пытается использовать эту модель. Я пытаюсь выполнить то же самое, что и вы, но не смог найти решение, используя findAll .
Теги:
sequelize.js

2 ответа

2

Вы можете исключить любые атрибуты, передав массив exclude в параметр attributes:

MyModel.findAll({
  attributes: {exclude: ['some_field']}
});
  • 0
    Не работает для первичного ключа в этом случае. У меня похожий запрос, который я пытаюсь выполнить, и перечисление первичного ключа в массиве exclude не дает никакого эффекта.
  • 0
    @JCF Downvote? Вы можете подтвердить это в Sequelize документах или кодовой базе? Я смотрю на код и не вижу, где он запрещает исключить первичный ключ.
1

Я хочу добавить, что вы можете явно перечислять нужные вам атрибуты и работать на вложенных внутренних соединениях следующим образом:

const my_model = await MyModel.findById(id, {
  include: [
    {
      model: AnotherModel,
      attributes: [ 'displayName', 'email' ] // only these attributes returned
    },
    { model: YetAnotherModel,
      include: [{
        model: AnotherModel,
        attributes: [ 'id', 'displayName', 'email' ]
      }]
    }
  ]
})

Ваш возвращенный объект должен выглядеть так:

{
  // ...MyModel attributes
  ,
  AnotherModel: {
    displayName: '...',
    email: '...',
  },
  YetAnotherModel: {
    // ...YetAnotherModel attributes
    ,
    AnotherModel: {
      id: '...',
      displayName: '...',
      email: '...',
    }
  }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню