Cuando una solicitud de Firestore en modo Datastore se completa de forma correcta, la API mostrará un código de estado HTTP 200 OK
, junto con los datos solicitados en el cuerpo de la respuesta.
Cuando falla una solicitud, la API de Datastore muestra un código de estado HTTP 4xx
o 5xx
que identifica de forma genérica la falla y una respuesta que proporciona información más específica sobre los errores que la causaron.
En el resto de esta página, se describe la estructura de un error, se detallan códigos de error específicos y se recomienda cómo manejarlos.
A continuación, se muestra la estructura de una respuesta de error para una solicitud JSON:
{
"error": {
"code": "integer",
"message": "string",
"status": "string"
}
}
El objeto de respuesta contiene un solo campo error
, cuyo valor contiene los siguientes elementos:
Elemento | Descripción |
---|---|
code |
Un código de estado HTTP que identifica genéricamente la falla de la solicitud. |
message |
Información específica sobre la falla de la solicitud. |
status |
El código de error canónico (google.rpc.Code ) para las API de Google. Los códigos que la API de Datastore puede mostrar se detallan en Códigos de error. |
Este es un ejemplo de una respuesta de error para una solicitud JSON:
{
"error": {
"code": 400,
"message": "Key path is incomplete: [Person: null]",
"status": "INVALID_ARGUMENT"
}
}
Si una solicitud realizada con un tipo de contenido de application/x-protobuf
genera un error, se mostrará un mensaje google.rpc.Status
en serie como la carga útil.
Códigos de error
La forma recomendada de clasificar los errores es inspeccionar el valor del código de error canónico (google.rpc.Code
). En los errores de JSON, este código aparece en el campo status
. En los errores application/x-protobuf
, está en el campo code
.
Código de error canónico | Descripción | Acción recomendada |
---|---|---|
ABORTED |
Indica que la solicitud entró en conflicto con otra. | Para una confirmación no transaccional: Reintenta la solicitud o estructura tus entidades a fin de reducir la contención. Para solicitudes que forman parte de una confirmación transaccional: Vuelve a intentar la transacción completa o estructura tus entidades a fin de reducir la contención. |
ALREADY_EXISTS |
Indica que la solicitud intentó insertar una entidad que ya existe. | No vuelvas a intentar la operación sin solucionar el problema. |
DEADLINE_EXCEEDED |
Se superó la fecha límite en el servidor. | Vuelve a intentarlo con una retirada exponencial. |
FAILED_PRECONDITION |
Indica que no se cumplió una condición previa para la solicitud. El campo de mensaje en la respuesta de error proporciona información sobre la condición previa que falló. Una causa posible es ejecutar una consulta que requiere un índice aún no definido. | No vuelvas a intentar la operación sin solucionar el problema. |
INTERNAL |
El servidor mostró un error. | No vuelvas a intentar esta solicitud más de una vez. |
INVALID_ARGUMENT |
Indica que un parámetro de solicitud tiene un valor no válido. El campo de mensaje en la respuesta de error proporciona información sobre el valor que no fue válido. | No vuelvas a intentar la operación sin solucionar el problema. |
NOT_FOUND |
Indica que la solicitud intentó actualizar una entidad que no existe. | No vuelvas a intentar la operación sin solucionar el problema. |
PERMISSION_DENIED |
Indica que el usuario no estaba autorizado a realizar la solicitud. | No vuelvas a intentar la operación sin solucionar el problema. |
RESOURCE_EXHAUSTED |
Indica que el proyecto superó su cuota, o la capacidad de la región o la multirregión. | Verifica que no superaste la cuota del proyecto. Si superaste la cuota de un proyecto, no lo intentes de nuevo sin solucionar el problema. De lo contrario, vuelve a intentarlo con la retirada exponencial. |
UNAUTHENTICATED |
Indica que la solicitud no tenía credenciales de autenticación válidas. | No vuelvas a intentar la operación sin solucionar el problema. |
UNAVAILABLE |
El servidor mostró un error. | Vuelve a intentarlo con una retirada exponencial. |