我对编码一般都很陌生,所以这是我的第一次尝试,所以如果我提出愚蠢的问题,请不要开枪;)现在我甚至无法理解广阔的后端世界。
所以我在服务方面遇到了一些问题,甚至决定哪种方式最好,扫描,查询......什么?
所以我想 - 我的方法就是扫描......我很难根据该项目的ID从数据库中检索项目。检索所有项目就像一个魅力,我需要类似的东西来获得一个项目。我在搜索网页时感到困惑,甚至不理解scanfilter,scanexpression这样的差异?这就是为什么我甚至没有想出一个好的尝试......但我需要的是扫描桌面并检索具有匹配ID的项目。我试着查看我的方法来检索所有的searchCases,并实现它来检索它,因为它应该看起来完全相同,但没有成功......
EDITED方法:方法我需要帮助:
public SearchCase getSearchCase(String id){
//this is obviously for a list, but how do I do it for ONE item?
HashMap<String, AttributeValue> sc = new HashMap<String, AttributeValue>();
sc.put("scId", new AttributeValue().withS(id));
ScanRequest scanRequest = new ScanRequest()
.withTableName(searchCaseTableName)
.withFilterExpression("id = scId");
ScanResult scanResult = client.scan(scanRequest);
?????
return searchCase;
}
作为参考,这里是检索所有项目的方法,它确实有效:
public List<SearchCase> getSearchCases() {
final List<SearchCase> cases = new ArrayList<SearchCase>();
ScanRequest scanRequest = new ScanRequest()
.withTableName(searchCaseTableName);
ScanResult result = client.scan(scanRequest);
try {
for (Map<String, AttributeValue> item : result.getItems()) {
SearchCase searchCase = mapper.readValue(item.get("payload").getS(), SearchCase.class);
cases.add(searchCase);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return cases;
}
答案 0 :(得分:0)
它一直是永恒的,但我想我会在6月份发布一个很长一段时间的正确答案。所以这是解决单个项目的解决方案:
u4
这种方法实际上采用了另一种方法,然后我最初认为我会解决这个问题。所以没有Scanrequest,而是使用int size=bytebuffer.getInt();
// ByteBuffer can't be bigger than Integer.MAX_VALUE bytes:
if(size<0) throw new IllegalArgumentException(
"truncated class file (attribute size "+(size&0xFFFFFFFFL)+')');
// carry on using the int value ordinarily
和public SearchCase getSearchCase(String id) throws Exception {
Table t = db.getTable(searchCaseTableName);
GetItemSpec gis = new GetItemSpec()
.withPrimaryKey("id", id);
Item item = t.getItem(gis);
SearchCase searchCase = mapper.readValue(StringEscapeUtils.unescapeJson(item.getJSON("payload").substring(1)), SearchCase.class);
return searchCase;
}
代替。这因此在JSON中引起了一些时髦的反斜杠,所以在我通过GetItemSpec
运行之前我的前端不会接受,否则就像魅力一样。
答案 1 :(得分:-1)
根据该项目的ID,我无法从数据库中检索项目
如果要根据某个唯一ID从DynamoDB检索项目,请使用load,其中&#34;使用给定的哈希键加载对象&#34; 。