/ / Error de rechazo de promesa no controlada: No se puede leer la propiedad 'json' de undefined - json, reactjs, api, react-native, map-function

Rechazo de promesa no controlada Error: No se puede leer la propiedad 'json' de undefined - json, reactjs, api, react-native, map-function

answers.map((answer, index) => {
answer_text = answer.answer_text;
id = answer.id;
return fetch(BASE_URL + url, {
method: "PUT",
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
"Authorization": "Token token=" + token
},
body: JSON.stringify({
question: {
answers_attributes: {
"0": {
answer_text: answer_text,
id: id
}
}
}
})
});
})

Utilicé la función de mapa para que en cada mapaDebería ir a JSON.stringify y asignar los valores. Pero obtuve el error "Rechazo de promesa no manejada TypeError: No se puede leer la propiedad" json "de undefined". por favor sugiéreme alguna solución

Gracias por adelantado.

Respuestas

3 para la respuesta № 1

Aquí está creando una serie de promesas de recuperación, necesitamos más información sobre cómo manejar estas promesas después de eso, supongo que está tratando de obtener una respuesta de estas promesas en algún lugar. .then(res => res.json()) pero la respuesta de su servidor no está en formato json.

Para manejar un rechazo de promesa de búsqueda, debes hacer esto:

fetch(smth)
.catch(error => //handle the error e.g. console.log(error))

Para ver si hay algún error en su solicitud json body, puede registrarlo en el servidor o registrarlo antes de enviarlo, también puede registrar la respuesta del servidor, intente esto para identificar lo que está mal:

answers.map((answer, index) => {
answer_text = answer.answer_text;
id = answer.id;
const body = JSON.stringify({
question: {
answers_attributes: {
"0": {
answer_text: answer_text,
id: id
} }
}
})
console.log("Json body request :", body);
return fetch(BASE_URL + url, {
method: "POST",
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
"Authorization": "Token token=" + token
},
body
}).then(res => {
console.log("server response :", res);
return res;
}).catch(err => console.log("Fetch error :", err));
})

Recomiendo usar una aplicación como Cartero para probar las respuestas de su servidor api (más fácil y más rápido para depurar solicitudes / respuestas de una API)

Edición: También creo que quieres hacer una solicitud POST en lugar de PUT.