【问题标题】:React Native - How to connect to AWS DynamoDB tableReact Native - 如何连接到 AWS DynamoDB 表
【发布时间】:2018-07-24 21:51:49
【问题描述】:

我正在按照这个 aws 教程创建我的第一个连接到 AWS 的 React Native 应用程序:

aws tutorial

一切安装良好,我的应用程序通过以下导入运行愉快:

**import Amplify from 'aws-amplify';
import aws_exports from './aws-exports'; 
Amplify.configure(aws_exports);**

我现在想将应用程序连接到一个名为“Movement”的现有 DynamoDB 表,但本教程仅说明如何使用 NoSQL 向导创建一个新表:awsmobile database enable --prompt

您能否指出一个(简单)资源,该资源向我展示如何连接到现有 DynamoDB 表并执行 CRUD 操作?

这些是我遵循的步骤:

我有一个名为:movement 的 DynamoDB 表 它有 3 个项目:hub_id、on_time、message

Hub_id 是主分区键 on_time 是主排序键

该表在消息项中保存传感器数据(运动、温度之类的东西)。

我使用以下方法创建了应用程序:

create-react-native-app dbapp

然后我运行: awsmobile 配置 aws 移动初始化

安装的放大: npm install aws-amplify --save

我在移动中心创建了项目。

然后我使用以下方法将应用程序链接到集线器: awsmobile 初始化 15c482e2-2c3c-11e8-8692-fblahblahblah3

CLI 响应:已成功链接 AWS Mobile Hub 项目:dbapp-datetime!

所以到目前为止一切看起来都很好(我希望!)

然后我将 app.js 更改为如下所示:pastebin

npm start 运行良好,我看不到任何错误。

我目前遇到的问题是我不知道如何查询我的表和填充变量以便我可以在视图中使用它们。

【问题讨论】:

  • 您查看过 AWS 文档吗? aws.github.io/aws-amplify/media/api_guide 应该会有所帮助。如果您不熟悉在 React/React-Native 中调用 restFul API,您可能需要另一个库,例如 Axios 或 Thunk
  • 感谢我使用了该资源,它使我能够创建 CloudLogic API。我失败的地方是如何将 API 连接到 DynamoDB 表。我意识到这可能是我的一个概念问题!
  • 到目前为止你尝试过什么?发布您的代码是快速获得“好”答案的最简单方法
  • 公平评论 - 我将用更准确的信息重新格式化问题。
  • 很好地重写了这个问题,我在 github 上发现了一个名为 was-mobile-react-native-starter (github.com/aws-samples/aws-mobile-react-native-starter) 的包,它的代码细节非常好,看起来可以回答你的问题。另一个更具体的示例可以在 github 存储库 mhart/react-server-routing-example github.com/mhart/react-server-routing-example 中的此文件 github.com/mhart/react-server-routing-example/blob/master/db.js 中找到。希望有帮助

标签: reactjs react-native amazon-dynamodb


【解决方案1】:

遵循建议的资源(感谢 SteveB)。我连接到 DynamoDB 表,对其进行查询并在我的应用程序中使用数据。

如果你也被卡住了,这里是我的代码的编辑版本。向所有编辑此内容的人道歉 - 我知道这很糟糕。确实有效:)

      // Use db to query the dynamoDB table - setup query parameters first //


var params = {
    TableName : "myproject-mobilehub-123456789-Sensors",
    ProjectionExpression:"hub_id, details.on_time, details.sensor_name, 
details.temperature, details.battery",
    KeyConditionExpression: "hub_id = :hid AND begins_with(on_time, :d)",
    ExpressionAttributeValues: {
        ":hid":"testdevice01",
        ":d": today,
        },
    Limit: 1,
    ScanIndexForward: false
};

//Execute db query using params

    async getQuery() {
    db.query(params, function(err, data) {
    if (err) { console.log("Query failed.");
    } else {
        console.log("Query succeeded.");
    };

    data.Items.forEach(function(details) {

        //display variables

console.log(details.hub_id,details.details.sensor_name,details.details.on_time, 
details.details.temperature, details.details.battery,); 

        //Populate variables
        hubid = details.hub_id;
        currroom = details.details.sensor_name;
        roomtime = details.details.on_time;
        roomtemp = details.details.temperature;
        roombattery = details.details.battery + "%";
    });

}});

//Finally populate text with variables

this.setState({
  displayText1: currroom,
  displayText2: roombattery,
  displayText3: roomtime,
  displayText4: roomtemp

});

【讨论】:

    猜你喜欢
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多