servicios web de amazon: recuperación de mis datos de dynamoDB en la aplicación Flutter

CorePress2024-01-24  10

¿Cómo puedo recuperar mis datos de mi dynamoDB y mostrarlos en mi aplicación flutter?

He intentado buscar mucho en la red pero no puedo encontrar nada que probarme.

Se trata de mostrar los datos de los sensores de temperatura que se van almacenando en las tablas.

¿Alguien puede sugerir algo, por favor?

Gracias.

Pruebe el paquete oficial de amplificación para flutter. Necesitaría colocar AWS API Gateway delante de su dynamoDB, posiblemente incluso lambda en el medio: Api GW->Lambda->DynamoDB. Flutter amplifica la biblioteca gLe ofrece una manera fácil y agradable de acceder a su backend de AWS y obtener los datos: docs.amplify.aws/lib/restapi/getting-started/q/platform/flutter

Andrija

28 de marzo de 2021 a las 7:18



------------------------------------

En realidad es bastante fácil.

Primero agregue este paquete a su proyecto.

Luego crea los modelos que deseas leer y escribir. Junto con los métodos de conversión.

class Parent {
   String name;
   late List<Child> children;

 
  factory Parrent.fromDBValue(Map<String, AttributeValue> dbValue) {
    name = dbValue["name"]!.s!;
    children = dbValue["children"]!.l!.map((e) =>Child.fromDB(e)).toList();
  }


  Map<String, AttributeValue> toDBValue() {
    Map<String, AttributeValue> dbMap = Map();
    dbMap["name"] = AttributeValue(s: name);
    dbMap["children"] = AttributeValue(
        l: children.map((e) => AttributeValue(m: e.toDBValue())).toList());
    return dbMap;
  }
}

(AttributeValue viene del paquete)

Entonces podrás consumir la API de dynamo db como de costumbre.

Crear servicio Dynamo
class DynamoService {
  final service = DynamoDB(
      region: 'af-south-1',
      credentials: AwsClientCredentials(
          accessKey: "someAccessKey",
          secretKey: "somesecretkey"));

  Future<List<Map<String, AttributeValue>>?> getAll(
      {required String tableName}) async {
    var reslut = await service.scan(tableName: tableName);
    return reslut.items;
  }

  Future insertNewItem(Map<String, AttributeValue> dbData, String tableName) async {
    service.putItem(item: dbData, tableName: tableName);
  }
}

Entonces podrás realizar la conversión cuando obtengas todos los datos de Dynamo.

List<Parent> getAllParents() {
   List<Map<String, AttributeValue>>? parents =
        await dynamoService.getAll(tableName: "parents");
  return parents!.map((e) =>Parent.fromDbValue(e)).toList()
}

Puedes comprobar todas las operaciones de Dynamo desde haquí

1

¿Sabes cómo corregir el desfase del reloj con este paquete aws_dynamodb_api? No es posible, es un gran problema.

-Marcelo Juan Cabrera Gutiérrez

30 de junio de 2023 a las 6:48



------------------------------------

Como complemento a la respuesta de Terblanche Daniel, tenga en cuenta que el escaneodevuelve un máximo de 1 MB de datos.

Es necesario volver a ejecutar el análisis si se establece lastEvaluatedKey.

  do {
    var result = await service.scan(
        exclusiveStartKey: lastEvaluatedKey,
        tableName: tableName);
    lastEvaluatedKey = result.lastEvaluatedKey;
    items.addAll(result.items ?? []);
  } while (lastEvaluatedKey != null);

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare