Errores y gestión de errores

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.