我是AWS和Dynamo的新手。我正在使用React.js前端和AWS(Gateway API、Lambda、Dynamo)后端进行我的项目。这是我的应用位置:
https://www.alphaux.com
单击“获取提示”后,我收到服务器响应。如果我单击一个关键字-这些关键字将添加到请求的GET参数列表中,如:topic=blah
以下是我的问题的详细信息:
在我的Lambda中:…const docClient=new AWS.DynamoDB。DocumentClient({region:'us-west-2});出口。处理程序=异步(事件)=
从GET
我收到以下参数:
const topicName = event.queryParams.topic="React";
const keywords = event.queryParams.topic.keywords="blah1,blah2,blah3";
...这里的一些代码将关键字字符串转换为数组:
const keywordsArray=[blah1, blah2, blah3];
在Dynamodb中,它们以以下方式存在:
[ { "S" : "javascript" }, { "S" : "programming" }, { "S" : "React" } ]
我的主要分区键是:id(Number)
我尝试了不同的方式和方法,使用扫描和查询-什么都不起作用。我卡住了。我尝试了以下方法:
const listToObjectMappings = () => {
let x = {};
/* keywords hardcoded for now: */
const keywords = ["javascript", "React"];
keywords.map(item => x[':' + item] = item)
return x
}
let mappings = listToObjectMappings()
let joined = Object.keys(mappings).join();
var params2 = {
TableName : "my-little-table",
FilterExpression: 'topic = :topic and #keywords IN (' + joined + ')',
ExpressionAttributeNames: {
'#keywords' : 'keywords'
},
ExpressionAttributeValues:{
":topic" : "React"
}
};
var params = {
TableName: "my-little-table",
FilterExpression: "#topic = :topic",
ExpressionAttributeNames: {
"#topic": "topic"
},
ExpressionAttributeValues: {
":topic": "React"
}
};
let result;
try {
/* scan DB */
result = await docClient.scan(params).promise();
}
catch(ex) {
result = ex;
}
当我使用“扫描”时,如果我试图使用“关键字”,结果总是空的[]。它仅适用于以下最小值:
const params = {
TableName : currentTable,
FilterExpression:'topic = :topic',
ExpressionAttributeValues:{
":topic" : requestedTopic
}
};
..这给了我基于请求主题的所有记录。
如果我使用“查询”,它会抱怨我的键名(“id”)太短,必须至少有3个字符长。
我被困住了,优雅地请求你的帮助!非常感谢。
如果您试图匹配主题和任何一个关键字,请使用以下内容:
const params = {
TableName: 'mytable',
FilterExpression: '#tp = :tp AND (contains(#kw, :kw1) OR contains(#kw, :kw2))',
ExpressionAttributeNames: {
'#tp': 'topic',
'#kw': 'keywords',
},
ExpressionAttributeValues: {
':tp': 'React',
':kw1': 'react',
':kw2': 'react-router',
},
};
如果您试图匹配主题和所有关键字,请使用以下内容:
const params = {
TableName: 'mytable',
FilterExpression: '#tp = :tp AND contains(#kw, :kw1) AND contains(#kw, :kw2)',
ExpressionAttributeNames: {
'#tp': 'topic',
'#kw': 'keywords',
},
ExpressionAttributeValues: {
':tp': 'React',
':kw1': 'react',
':kw2': 'react-router',
},
};
我必须构建一个Android应用程序,用于读取一种设备上的信息,该设备仅在过滤时在扫描时显示(一般扫描不会显示它)。该设备类似于信标,因此它仅通告数据,这些数据在通告上具有我想要的信息(它不可连接)。制造商给我的过滤器是原始数据。即: 0x02010612435542 我不能按名称过滤它,因为设备不会宣传它的名称。我也不能通过来完成,因为应用程序以前不会知道设备的地址(这将是许多此类设备)。 nr
第一篇文章是关于Stack的,对于使用Python和DynamoDB编程来说,这是相当新的,但是我只是想在我的表上运行一个扫描,根据两个预定义的属性返回结果。 ---这是我的Python代码片段--- 我的发电机有4个磁场。 ID 日期 班次 安全 现在关于这个问题,在运行时,我得到了两个返回的表条目,而我应该只得到第一个条目...根据我的扫描标准,有“没有安全问题”的那个。 ---这是我的Dyn
我正在Android上使用BluetoothLe(最小API: 21)。目前过滤服务uuid的过程有效,但不完全如预期的那样。下面是用于设置基本扫描仪参数的代码段,这是目前有效的。基于Ble的其他工作领域,(iOS,嵌入式硬件)很明显,有能力仅根据其16位UUID分配来过滤Ble设备。这让我想到Android...我意识到android对Ble及其相当细分的设备生态系统有一个相当艰难的开始,但我不
我试图子集一个熊猫DataFrame在python基于两个逻辑语句 即。 但是第3行的语法无效。 有没有一种方法可以在一行中完成?
问题内容: 我正在做熊猫分析。 我的表有700万行* 30列。单元格值的范围从-1到3随机。现在,我想根据列的值过滤掉行。 我了解如何根据多个条件进行选择,写下条件并通过“&”“ |”组合。 但是我有30列要过滤,并按相同的值过滤。例如,需要选择最后12列的值等于-1 上面的代码给了我一个布尔值。我需要实际的数据框。 这里的逻辑是“或”,表示如果任何列的值为-1,则需要选择该行。另外,很高兴知道我
问题内容: 是否可以通过多个值过滤对象数组? 例如,在下面的示例中,我可以按term_ids 5和6进行过滤,然后同时键入car吗? 如果可以轻松使用,肯定可以使用库。 问题答案: 您可以使用Array.filter