React Native - 如何连接到AWS DynamoDB表

时间:2018-03-20 14:07:07

标签: reactjs react-native amazon-dynamodb

我正在按照这个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数据库启用 - 提示

你能指点我一个(简单的)资源,它告诉我如何连接到现有的DynamoDB表并执行CRUD操作吗?

这些是我遵循的步骤:

我有一个名为:movement的DynamoDB表 它有3个项目:hub_id,on_time,消息

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

该表保存消息项中的传感器数据(移动,温度等)。

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

create-react-native-app dbapp

然后我跑了:      awsmobile configure      aws mobile init

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

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

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

CLI回复:成功关联AWS Mobile Hub项目:dbapp-datetime!

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

然后我将app.js改为:pastebin

npm start 运行得很好,没有我能看到的错误。

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

1 个答案:

答案 0 :(得分: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

});