我尝试了几种方法,但一直未能找到如何将数字添加到NS集合中。这都是在lambda函数内运行的。
我正在创建一个 dynamodb 表,其中十六进制中的不同颜色与一组 id 对齐。我正在优化表以实现快速读取并避免重复,这就是为什么我想为每个十六进制维护一组 ID。
如何将项目添加到表中:
let doc = require('dynamodb-doc');
let dynamo = new doc.DynamoDB();
var object = {
'TableName': 'Hex',
'Item': {
'hex': '#FEFEFE',
'ids': {
'NS': [2,3,4]
}
}
}
dynamo.putItem(object, callback);
使用Dynamodb更新项目文档标准
var params = {
"TableName" : "Hex",
"Key": {
"hex": "#FEFEFE"
},
"UpdateExpression" : "ADD #oldIds :newIds",
"ExpressionAttributeNames" : {
"#oldIds" : "ids"
},
"ExpressionAttributeValues": {
":newIds" : {"NS": ["5", "6"]}
},
};
dynamo.updateItem(params, callback);
这会返回以下错误,因此Dynamo认为:newIds是地图类型而不是set(?)
"errorMessage": "Invalid UpdateExpression: Incorrect operand type for operator or function; operator: ADD, operand type: MAP"
尝试2:
var setTest = new Set([5, 6]);
var params = {
"TableName" : "Hex",
"Key": {
"hex": "#FEFEFE"
},
"UpdateExpression" : "ADD #oldIds :newIds",
"ExpressionAttributeNames" : {
"#oldIds" : "ids"
},
"ExpressionAttributeValues": {
":newIds" : setTest
},
};
dynamo.updateItem(params, callback);
错误 2(相同的错误):
"errorMessage": "Invalid UpdateExpression: Incorrect operand type for operator or function; operator: ADD, operand type: MAP"
试试3:
var params = {
"TableName" : "Hex",
"Key": {
"hex": "#FEFEFE"
},
"UpdateExpression" : "ADD #oldIds :newIds",
"ExpressionAttributeNames" : {
"#oldIds" : "ids"
},
"ExpressionAttributeValues": {
":newIds" : { "NS" : { "L" : [ { "N" : "5" }, { "N" : "6" } ] }}
},
};
dynamo.updateItem(params, callback);
错误3(相同错误):
"errorMessage": "Invalid UpdateExpression: Incorrect operand type for operator or function; operator: ADD, operand type: MAP"
尝试4:
var params = {
"TableName" : "Hex",
"Key": {
"hex": "#FEFEFE"
},
"UpdateExpression" : "ADD #oldIds :newIds",
"ExpressionAttributeNames" : {
"#oldIds" : "ids"
},
"ExpressionAttributeValues": {
":newIds" : [5,6]
},
};
dynamo.updateItem(params, callback);
错误4(类似错误,但迪纳摩认为我这次添加了一个列表)
"errorMessage": "Invalid UpdateExpression: Incorrect operand type for operator or function; operator: ADD, operand type: LIST"
https://stackoverflow.com/a/37585600/4975772(我正在添加到一个集合,而不是列表)
https://stackoverflow.com/a/37143879/4975772(我使用的是javascript,而不是python,但我基本上需要相同的东西,只是不同的语法)
https://github.com/awslabs/dynamodb-document-js-sdk/issues/40#issuecomment-123003444(我需要做这件事,但我没有使用dynedb文档js-sdk,我使用的是AWS Lambda
这个答案可能对那些使用npm DynamoDB模块的人有所帮助
我们有同样的问题。因为我们使用npm dynamodb模块进行查询,而不是从AWS导出。DynamoDB模块,给出了AWS的解决方案。DynamoDBDocumentClint是可实现的,除非我们可以从npm dynamoDb模块转移到AWS。DynamoDB查询。所以与其转移/转换查询。
我们尝试将DynamoDB npm模块降级到版本~1.1.0并且它成功了。以前的版本是1.2。X.
我也一直在纠结这个。我发现DynamoDB实际上有两个api。
AWS. DynamoDB
AWS。DynamoDBDocumentClient
像你一样,我无法使ADD功能工作。我尝试导入并使用DynamoDB api,而不是DynamoDBDocumentClient api。它为我解决了这个问题。我使用字符串集而不是数字集,但我想这不会有什么区别。
var AWS = require('aws-sdk');
var dynamo = new AWS.DynamoDB();
// var dynamo = new AWS.DynamoDB.DocumentClient();
...
var params = {};
params.TableName = “MyTable”;
params.ExpressionAttributeValues = { ':newIds': { "SS": ["someId"] } };
// :newIds represents a new dynamodb set with 1 element
params.UpdateExpression = "ADD someAttribute :newIds";
dynamoClient.updateItem(params, function(err, data) { ….}
let AWS = require('aws-sdk');
let docClient = new AWS.DynamoDB.DocumentClient();
...
var params = {
TableName : 'Hex',
Key: {'hex': '#FEFEFE'},
UpdateExpression : 'ADD #oldIds :newIds',
ExpressionAttributeNames : {
'#oldIds' : 'ids'
},
ExpressionAttributeValues : {
':newIds' : docClient.createSet([1,2])
}
};
docClient.update(params, callback);
这导致这个dynamodb表:
如果该集不存在,则该代码将为您创建它。还可以使用不同的集运行该代码以更新该集的元素。超级方便。
let doc = require('dynamodb-doc');
let dynamo = new doc.DynamoDB();
var params = {
TableName : 'Hex',
Key: {'hex': '#555555'},
UpdateExpression : 'ADD #oldIds :newIds',
ExpressionAttributeNames : {
'#oldIds' : 'ids'
},
ExpressionAttributeValues : {
':newIds' : dynamo.Set([2,3], 'N')
}
};
dynamo.updateItem(params, callback);
(不要在将来的开发中使用这段代码,我只是为了帮助任何使用现有DynamoDB文档SDK的人)
注意,当我问这个问题时,结果集看起来像一个字面上的json映射对象(当在dynedb截图中查看时),这将解释这个错误消息
"errorMessage": "Invalid UpdateExpression: Incorrect operand type for operator or function; operator: ADD, operand type: MAP"
所以我使用了错误的语法。该解决方案可在(现已弃用)AWS Labs dynamodb-document-js-sdk 文档中找到
更新文档客户端的完整留档可在此处查看:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html
我可以在苹果Notes和其他Notes app中看到,它们有表格嵌入到文本编辑器中。Swift有NSTextTable,但它只适用于macOS。我想知道我怎么能给macOS和iOS都添加一个表呢? 此外,这些表应该是交互式的,就像在Apple Notes中一样,我可以添加一行或列,移动它们,等等。我看过这个项目,它可以让你嵌入一个NS/UIView到编辑器中,但这似乎更像是一个黑客。 有什么想法吗
我已经阅读了官方的AWS文档和几个论坛,但是我仍然找不到我在使用Python/Boto3和Dynamodb向string_集合添加项目时做错了什么。这是我的密码: 我得到的错误是: 调用UpdateItem操作时发生错误(ValidationException):更新表达式中的操作数的数据类型不正确\“
我的团队在DynamoDB中添加了一个新字段,我需要为当前不包含该字段的所有条目添加一个整数。 我尝试在这里使用Update示例,但是我得到了一个,因为我的子句不包括主键。但是,我不需要按主键过滤,因为我只关心没有新列值的条目。 我正在运行的查询是PartiQL,它是:
问题内容: 我在任何地方都找不到它,所以您的帮助对我非常有用:)这是该字段: FragmentCategory: 这是发送的表格: 我尝试过这样的事情: categories = fragmentCategory.objects.get(id=1), 要么: 问题答案: Django文档的整个页面都专门针对此内容,并从内容页面进行了索引。 如该页面所述,你需要执行以下操作: 要么
我试图更新项目属性,这是一个字符串列表。仅当属性不存在时,才能更新(追加)该属性。有点list_append var参数={... 'SET friends=list\u append(如果不存在(friends,:empty\u list),:new\u friends)', 这不管用,有办法吗?因此,如果Bobo仍然不在我的“朋友”列表中,它将附加它
问题内容: 有没有更好的方法来获得此结果?如果num的位数比位数多,则此函数将失败,并且我认为它应该在库中的某个位置(例如Integer.toString(x,“%3d”)等) 问题答案: tring.format(http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html#syntax) 在你的情况下,它将是: 0 - to
我正在执行对DynamoDB表的扫描,然后我需要将返回项中的相应属性添加到类型的列表中(具有单个构造函数)。代码当前成功扫描DB并返回扫描结果的。然而,由于某种原因,我的迭代似乎返回null。
问题内容: 在我的Java桌面应用程序中,我有一个TableView,我想在其中包含CheckBoxes列。 我确实在http://www.jonathangiles.net/javafx/2.0/CellFactories/上找到了完成的位置,但是由于无法下载,因为我不知道Jonathan Giles会多久回复我的电子邮件,所以我认为d问… 如何将CheckBox放在TableView的单元格中