‫Instrutor: Agora vamos
‫lidar com o erro que ocorre quando tentamos
‫criar campos duplicados para campos que deveriam ser únicos.
‫E então, lembre-se de
‫que esse é o tipo de
‫erro que recebemos.
‫Então, tentamos criar um
‫novo passeio com um nome que já
‫existe e os campos de nome deveriam
‫ser únicos e obtemos este erro.
‫Agora, este erro aqui
‫não tem uma propriedade de nome, ok?
‫E isso porque, como mencionei antes,
‫na verdade não é um erro
‫causado por um Mongoose.
‫Mas em vez disso,
‫realmente, pelo driver MongoDB subjacente, certo?
‫E então,
‫o que vamos
‫fazer para identificar esse erro é usar este código 11.000 aqui.
‫Tudo bem?
‫Portanto, temos um manipulador para o CastError.
‫Vamos agora criar um para o caso em que temos
‫esse erro. código,. código igual a 11.000.
‫Nesse caso, todos os erros devem ser iguais aos retornos
‫de erro de handleDuplicateFields e, novamente, estou
‫adicionando DB aqui apenas para sabermos que isso tem a ver com
‫nosso banco de dados.
‫Tudo bem?
‫E, então, vamos agora criar essa função.
‫E agora, a mensagem que enviaremos é
‫esta, então vamos criá-la aqui.
‫E então eu quero dizer, valor do campo duplicado,
‫e então ouvir o nome
‫desse valor, então vamos colocar isso em x por enquanto.
‫Geraremos isso um pouco mais tarde.
‫Portanto, use outro valor.
‫Tudo bem?
‫E então, no caso que
‫acabamos de ver, este x aqui deve ser chamado de Caminhante da Floresta.
‫Basicamente, o que estamos tentando extrair
‫dessa string
‫de mensagem de erro é "The Forest Hiker. “Então esse é o valor duplicado que queremos
‫enviar ao
‫cliente para que
‫ele possa corrigi-lo
‫e criar outro nome.
‫Então, como podemos realmente extrair esse
‫pedaço da corda aqui?
‫Bem, vamos usar uma expressão regular para,
‫basicamente, como acabei de dizer, encontrar o
‫texto que está entre aspas.
‫Porque aqui nesta string, tudo o que
‫realmente temos para identificar este texto aqui,
‫para encontrá-lo, são essas aspas.
‫Tudo bem?
‫E agora, como você
‫já sabe, as expressões regulares podem ser muito difíceis.
‫Normalmente, eu apenas os procuro no Google e deixe-me
‫mostrar como eu realmente faço isso.
‫Nesse caso, eu simplesmente pesquisaria o texto de
‫correspondência de expressão regular entre aspas.
‫E então geralmente é o primeiro resultado certo.
‫E aqui embaixo temos o resultado e, portanto,
‫podemos usar simplesmente esta expressão regular.
‫Agora vejo que temos aqui embaixo isso aqui.
‫Isso também funciona e é mais fácil de ler.
‫E tem muitos votos positivos, então
‫podemos simplesmente usar este aqui.
‫Então isso também deve funcionar.
‫Então, vamos copiá-lo e
‫voltar ao nosso código, e dizer que nosso valor, então o
‫valor const é igual ao erro. ermsg, então lembre-se de que esse era
‫o nome da propriedade.
‫Então, errmsg. Novamente, isso é porque este é um erro criado pelo Mongo
‫e, portanto,
‫esses nomes são ligeiramente diferentes.
‫OK?
‫Portanto, temos
‫essa string e agora queremos corresponder à nossa expressão regular.
‫Portanto, combine e, em JavaScript, uma
‫expressão regular está sempre entre duas barras.
‫Em seguida, cole aqui o que acabamos de
‫obter do Stack Overflow e vamos dar uma olhada.
‫Portanto, já estamos em produção.
‫No momento, não enviaremos nenhuma resposta.
‫Tudo o que quero fazer agora é dar uma olhada no valor.
‫Então, se eu enviei isso agora, teremos uma resposta estranha aqui.
‫E novamente, isso é porque não estamos enviando nenhum erro.
‫Mas, por enquanto, eu estava realmente interessado apenas no valor.
‫E então isso, o que vemos aqui no log agora
‫é esse valor.
‫E, na verdade, é uma matriz.
‫Mas o que nos interessa é, na verdade, esta string aqui.
‫Então, ele realmente correspondeu a todo o texto que
‫estava entre as strings e, portanto,
‫podemos dizer que funcionou.
‫Portanto, nossa expressão regular funcionou.
‫Agora, tudo o que temos a dizer é que queremos
‫o primeiro elemento desse array.
‫Então, elemento zero.
‫E agora, vamos realmente prosseguir
‫e retornar ou new AppError, então new AppError,
‫cole a mensagem e novamente o código de status 400 para
‫uma solicitação incorreta.
‫E agora vamos tentar novamente.
‫Novamente, ainda estamos executando uma
‫produção e, portanto, esse código deve ser executado agora.
‫E, claro, tentamos substituir nosso x.
‫Claro, agora queremos nosso valor aqui.
‫E então, agora temos um
‫valor de campo duplicado, "The Forest Hiker. " Perfeito.
‫E agora,
‫a seguir, no próximo vídeo, lidaremos com
‫o último dos três erros que são os erros de validação.