Articles of amazon dynamodb

dynamodb基于3列更新项目

我有一个custID和传感器作为我的主键和sorting键的表 custID sensor data date joe 123 wind 01/01/1901 mary 456 rain 01/02/1901 现在当一个新的logging如下所示 新行: joe, 123, temp, 01/04/1901 更新行: joe, 123, wind, 01/07/1901 我想input它作为一个新的行,但如果数据列匹配,我想更新行。 现在,如果我改变我的钥匙传感器和数据,这将工作,但我将如何做到这一点与当前的钥匙? 我的实际数据结构比这个复杂得多,但是我想保持简单。 var updateExpressions =[]; updateExpressions.push("#data"+counter+"=:data"+counter+", #date"+ counter +" = :date"+ counter); attrNames["#data"+ counter] = "data"; attValues[":data"+ counter] = data; attrNames["#date"+ counter] = "date"; attValues[":date"+ counter] = date; counter++; 然后在加载参数 […]

在这种情况下如何做容量控制?

我的应用程序从DynamoDB读取数据,该数据具有预configuration的读取容量,这限制了读取吞吐量。 我想控制我的查询不达到极限,这里是我现在这样做: const READ_CAPACITY = 80 async function query(params) { const consumed = await getConsumedReadCapacity() if (consumed > READ_CAPACITY) { await sleep((consumed-READ_CAPACITY)*1000/READ_CAPACITY) } const result = await dynamoDB.query(params).promise() await addConsumedReadCapacity(result.foo.bar.CapacityUnits) return result.Items } async function getConsumedReadCapacity() { return redis.get(`read-capacity:${Math.floor(Date.now() / 1000)}`) } async function addConsumedReadCapacity(n) { return redis.incrby(`read-capacity:${Math.floor(Date.now() / 1000)}`, n) } 如您所见,查询将首先检查当前消耗的读取容量,如果不超过READ_CAPACITY ,则执行查询,并累计所消耗的读取容量。 问题是代码在多个服务器上运行,所以有竞争条件, […]

如何从发电机数据生活图

我正在使用node.js和dynamodb.I需要使用node.js从dynamo db绘制活动图。 帮助我从发电机数据库绘制实时图

NodeJS:如果不存在,则在dynamodb中插入logging

我需要将用户的信息存储在DynamoDB中,并在DynamoDB表中不存在的情况下将邮件发送给同一用户。 我正在做循环。 该列表只包含2个logging。 问题是只有第二个logging被插入到表中,邮件被发送两次给同一个用户。 这里是代码: module.exports.AddUser = function(req, res, usersList, departmentId) { var _emailId = ""; var _userName = ""; var _departmentId = departmentId; for (var i = 0; i < usersList.length; i++) { _emailId = usersList[i].emailId; _userName = usersList[i].userName; var params = { TableName: "UsersTable", Key: { "emailId": _emailId, "departmentId": _departmentId } }; docClient.get(params, […]

无服务器:dynamodb删除条件

我正在尝试删除带有条件的logging,并且失败。 我不断收到此错误: The provided key element does not match the schema 。 这是我在yml中的定义: resources: Resources: vuelosTable: Type: 'AWS::DynamoDB::Table' DeletionPolicy: Delete Properties: AttributeDefinitions: – AttributeName: id AttributeType: S – AttributeName: vuelta AttributeType: S KeySchema: – AttributeName: id KeyType: HASH – AttributeName: vuelta KeyType: RANGE ProvisionedThroughput: ReadCapacityUnits: 1 WriteCapacityUnits: 1 TableName: ${self:provider.environment.DYNAMODB_TABLE} 这些是试图删除时的参数: params = { RequestItems: […]

Node.JS Dynamodb内存问题与put

现在我遇到了在文档客户端上使用Dynamodb的put方法的问题。 当我现在用put方法运行我的程序时,内存从70MB开始,跳到90MB,然后继续稳定到65MB左右。 Uncommented了我的程序的内存跳转到90MB,并不断增长。 var params; for (var i = 0; i < tuples.length; i++){ if(tuples[i][1] != ""){ params = { TableName: "wordTable2", Item:{ "word":tuples[i][1], "url":tuples[i][0], "info":tuples[i][2] } }; var dynamobd = new AWS.DynamoDB.DocumentClient(); dynamobd.put(params, function(err, data){ //if(err) console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2)); //else console.log("Added item:", JSON.stringify(data, null, 2)); }); dynamobd = […]

页面不工作错误,节点js冻结

我第一次使用Node,在某个响应被触发时遇到麻烦。 在这种情况下,我正在检查用户名和密码是否与DynamoDB中的用户名和密码相匹配。 当用户名和密码不匹配我的数据库时,它redirect到我的页面,但是当它,我所有的console.log输出打印两次(这显然是与Chrome中的favicon有关),如“在线”和“ [pw] + database.js“,但它也冻结了我的IDE和terminal。 然后我在浏览器中看到“页面不工作,本地主机没有发送任何数据”错误。 忽略隐私问题:)想法? database.js: var myDB_lookup = function(username, password, route_callbck){ console.log('Looking up: ' + username); users.get(username, function (err, data) { if (err) { route_callbck(null, "Lookup error: "+err); } else if (data == null) { route_callbck(null, null); } else { // JSON object that stores password & fullname var value = […]

nodejs,发电机表获取操作callback或asynchronous

伙计们,我正在编写一个从DynamoDB表中获取结果的API,并将JSON放回浏览器。 下面的代码工作,并返回所需的结果…但是,在阅读了asynchronous和callback后,它变得重要,我知道我是否应该以另一种方式写这个? 以下几百个并发的API调用程序能够很好地扩展吗? 这段代码似乎没有使用callback。 它是asynchronous的吗? var restify = require('restify'); var AWS = require('aws-sdk'); AWS.config.update({region: 'us-east-1'}); var db = new AWS.DynamoDB(); function myFunction(req, res, next) { var params = { TableName : 'myTable', KeyConditions : { "number" : { "AttributeValueList" : [ { "S" : req.params.simethingid } ], "ComparisonOperator" : "EQ" } } } db.query(params, function(err, […]

node.jscallback函数dynamodb

伙计们,我正在编写一个API函数,需要对后端DynamoDB表进行多次调用。 返回的JSON结果需要合并,然后作为单个响应返回给调用者。 我怎么会写这个,因为我似乎不完全写这个asynchronous… 到目前为止,我已经能够编写函数来进行一个调用,然后返回它。 我将如何编程第二个db.query? var restify = require('restify'); var fs = require('fs'); var AWS = require('aws-sdk'); AWS.config.update({region: 'us-east-1'}); var db = new AWS.DynamoDB(); module.exports = { license: function (req, res, next) { var params = { TableName : 'tableA', KeyConditions : { "myHashKey": { "AttributeValueList" : [ { "S" : "1" } ], "ComparisonOperator" […]

将ConditionalOperator设置为OR的DynamoDB扫描仍在执行AND

根据API文档,我有以下scan参数: var params = { "TableName": "MyTable", "ScanFilter": { "id": { "AttributeValueList": [ { "S": "ID-A" }, { "S": "ID-D" } ], "ComparisonOperator": "IN" }, "facilityName": { "AttributeValueList": [ { "S": "Name A" } ], "ComparisonOperator": "IN" } }, "ConditionalOperator": "OR" }; dynamo.scan(params, function (err, data) { if (err) { console.log(err, err.stack); } else { […]