1
resposta

Multiplos scopes de associação

É possível usar múltiplos scopes em associações sem que sejam sobrescritos? Estou fazendo dessa forma porem só o último funciona, os anteriores são sobrescritos:

Pessoas.hasMany(models.Agendamentos, {
        foreignKey: 'cliente_id',
        scope:
        {
          status: 'confirmado',
        },
        as: 'agendamentosConfirmado',
        scope: {
          status: 'pendente',
        },
        as: 'agendamentosPendente',
        scope: {
          status: 'cancelado',
        },
        as: 'agendamentosCancelado',
        scope: {
          status: 'concluido',
        },
        as: 'agendamentosConcluido',
      })

Quando uso o scope de status confirmado apresenta essa mensagem: "cliente.getAgendamentosConfirmado is not a function"

1 resposta

Olá Tiago, tudo bem?

Peço desculpa pela demora para respondê-lo.

Sim! É possível usar múltiplos scopes em associações sem que sejam sobrescritos. No entanto, no seu código, você está sobrescrevendo as configurações da propriedade "scope" a cada vez que o adiciona novamente. Para resolver isso, você pode agrupar todas as configurações de escopo em um único objeto, como no exemplo abaixo:

Pessoas.hasMany(models.Agendamentos, {
  foreignKey: 'cliente_id',
  scopes: {
    agendamentosConfirmado: {
      status: 'confirmado',
    },
    agendamentosPendente: {
      status: 'pendente',
    },
    agendamentosCancelado: {
      status: 'cancelado',
    },
    agendamentosConcluido: {
      status: 'concluido',
    }
});

Dessa forma, você pode acessar cada escopo usando os nomes definidos nos objetos.

Espero ter ajudado. Caso tenha mais problemas ou dúvidas, estarei à disposição.

No mais, grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.