GOOGLE ADS

miércoles, 4 de mayo de 2022

La mutación de consulta de reacción isError no se establece en verdadero en POST fallido

Estoy usando la siguiente solicitud de publicación de búsqueda para crear un elemento en mi base de datos. Estoy tratando de usar react-query para detectar el error arrojado por la solicitud.

export function createItem(id, body, token) {
fetch(`${API_URL}/${id}/items`, {
method: 'post',
headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` },
body: JSON.stringify(body)
})
.then(res => {
if (res.ok) {
return res.json()
}
console.log(res.status)
throw new Error("Error creating review")
})
.catch((err) => console.log(err))
}

Tengo la mutación establecida así:

const mutation = useMutation(() => {
return createItem(props.item.id, item, token)
})

Y se llama con:

<Button disabled={!valid} onPress={() => mutation.mutate()}>
Submit
</Button>

Yo uso esta lógica para mostrar el error:

{
mutation.isError && <Text>{mutation.error.message}</Text>
}

Veo los createItemerrores de función con un código de estado 400, que es lo que espero, pero reaccionar-consulta no se establece isErroren verdadero. En cambio isSuccesses cierto. ¿Estoy manejando mal el error de alguna manera?


Solución del problema

Desde los documentos de consulta de reacción, devuelven una promesa a la mutación, así que intente cambiar su función createItema lo siguiente:

export function createItem(id, body, token) {
// return the fetch as a promise
return fetch(`${API_URL}/${id}/items`, {
method: 'post',
headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` },
body: JSON.stringify(body)
})
// remove then and catch here

No hay comentarios:

Publicar un comentario

Regla de Firestore para acceder a la generación de subcolección Permisos faltantes o insuficientes

Tengo problemas con las reglas de Firestore para permitir el acceso a algunos recursos en una subcolección. Tengo algunos requests document...