我正在按照这个aws教程创建我的第一个连接到AWS的React Native应用程序:
一切安装正常,我的应用程序运行愉快,使用以下导入:
**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 运行得很好,没有我能看到的错误。
我目前遇到的问题是,我不知道如何查询我的表并填充变量,以便我可以在视图中使用它们。
答案 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
});