Cuando una solicitud de Firestore en modo Datastore se realiza correctamente, la API devuelve 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 Datastore devuelve un código de estado HTTP 4xx
o 5xx
que identifica de forma genérica el fallo, así como una respuesta que proporciona información más específica sobre los errores que han provocado el fallo.
En el resto de esta página se describe la estructura de un error, se enumeran códigos de error específicos y se recomienda cómo gestionarlos.
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 único campo error
cuyo valor incluye los siguientes elementos:
Elemento | Descripción |
---|---|
code |
Un código de estado HTTP que identifica de forma genérica el fallo de la solicitud. |
message |
Información específica sobre el fallo de la solicitud. |
status |
El código de error canónico (google.rpc.Code ) de las APIs de Google. Los códigos que puede devolver la API Datastore se indican en Códigos de error. |
A continuación se muestra un ejemplo de 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 el tipo de contenido application/x-protobuf
genera un error, devolverá un mensaje google.rpc.Status
serializado como 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 de application/x-protobuf
, se encuentra en el campo code
.
Código de error canónico | Descripción | Acción recomendada |
---|---|---|
ABORTED |
Indica que la solicitud ha entrado en conflicto con otra. | En el caso de una confirmación no transaccional: vuelve a intentar la solicitud o estructura tus entidades para reducir la contención. En el caso de las solicitudes que forman parte de una confirmación transaccional: vuelve a intentar toda la transacción o estructura tus entidades para reducir la contención. |
ALREADY_EXISTS |
Indica que la solicitud ha intentado insertar una entidad que ya existe. | No vuelvas a intentarlo sin solucionar el problema. |
DEADLINE_EXCEEDED |
Se ha superado un plazo en el servidor. | Vuelve a intentarlo con un tiempo de espera exponencial. |
FAILED_PRECONDITION |
Indica que no se ha cumplido una condición previa de la solicitud. El campo de mensaje de la respuesta de error proporciona información sobre la condición previa que no se ha cumplido. Una posible causa es que se ejecute una consulta que requiera un índice que aún no se haya definido. | No vuelvas a intentarlo sin solucionar el problema. |
INTERNAL |
El servidor ha devuelto un error. | No vuelva a intentar enviar esta solicitud más de una vez. |
INVALID_ARGUMENT |
Indica que el valor de un parámetro de solicitud no es válido. El campo de mensaje de la respuesta de error proporciona información sobre qué valor no era válido. | No vuelvas a intentarlo sin solucionar el problema. |
NOT_FOUND |
Indica que la solicitud ha intentado actualizar una entidad que no existe. | No vuelvas a intentarlo sin solucionar el problema. |
PERMISSION_DENIED |
Indica que el usuario no tenía autorización para hacer la solicitud. | No vuelvas a intentarlo sin solucionar el problema. |
RESOURCE_EXHAUSTED |
Indica que el proyecto ha superado su cuota o la capacidad de la región o multirregión. | Comprueba que no hayas superado la cuota de tu proyecto. Si has superado la cuota de un proyecto, no vuelvas a intentarlo sin solucionar el problema. De lo contrario, vuelve a intentarlo con un tiempo de espera exponencial. |
UNAUTHENTICATED |
Indica que la solicitud no tenía credenciales de autenticación válidas. | No vuelvas a intentarlo sin solucionar el problema. |
UNAVAILABLE |
El servidor ha devuelto un error. | Vuelve a intentarlo con un tiempo de espera exponencial. |