Indicative: how i can validate equals array rule?

I’m trying to validate if a “type_answer” have value “Multipla Escolha” or “Aberta”.

I do this way:

const tiposPergunta = ['Texto', 'Imagem', 'Som', 'Ordem Correta'];

const tipoOpcoes = ['Texto', 'Imagem', 'Som']

const tipoRespostas = ['Multipla Escolha', 'Aberta']

and my rules:

const rules = (idIgnorar = '') => ({

  book_unit_id: 'integer|required',

  question_form: 'string|max:255|required|equals:'+tiposPergunta,

  option_form: 'string|max:255|required|equals:'+tipoOpcoes,

  type_answer: 'string|max:255|required|equals:'+tipoRespostas

})

my messages error:

const messages = {

 required: field => `${field} é obrigatório e não foi preenchido!`,

 string: field => `${field} está com o tipo incorreto! (esperado texto)`,

 integer: field => `${field} está com o tipo incorreto! (esperado numérico)`,

 equals: field => `${field} não foi preenchido com o valor esperado. `

}

so, in my function store:

const validation = await validate(bookUnitQuestion, rules(''), messages)

    if (validation.fails()) {

      return response.validateError(validation)

    }

I’m putting this request:

{
    "book_unit_id": 7,
    "question_form": "Texto",
    "option_form": "Texto",
    "type_answer": "Aberta",
    "correct_answer_description": "",
    "correct_answer_description_id": "",
    "image_sound": "",
    "description": "teste",
    "status": false,
    "created_at": "2020-01-20T11:21:35.866Z",
    "updated_at": "2020-01-20T11:21:35.866Z"
}

But i’m receiving:

"type_answer não foi preenchido com o valor esperado. "

If i put a console.log():

console.log(bookUnitQuestion.type_answer)
I have in my console: Aberta

Changed to “in” rule and now seems to work

1 Like