我希望能够限制在每个查询中获取的FETCH元素,但我在这里面临以下问题:

因为我在DynamoDB中使用单表设计,所以在这里我只得到了四个项目:

enter image description here

If I check the 10 first elements in DynamoDB, I will notice that I am getting the count here, regardless of the items I am filtering in my Scan operation enter image description here

  async paginate<TEntity>(
    limit = 10,
    start_key: any
    TableName = $env.MAIN_TABLE
  ): Promise<Paginate<TEntity>> {
    Assert.ok(TableName)
    const items= await this.instance.scan({
       TableName
       Limit: limit,
       ExclusiveStartKey: start_key,
       FilterExpression: 'contains(PK, :PK)',
       ExpressionAttributeValues: {
         ':PK': 'QUIZ#'
       }
    })
    return items
  }

这里有没有人知道解决这个问题的办法?

推荐答案

您将对Limit=10计算Scan,并提供FilterExpression,这意味着DynamoDB将首先读取前10项,然后计算FilterExpression并返回该批10项中的哪些项对您的筛选器求值为True.

First line of docs

单次扫描操作最多读取设置的最大项目数(如果使用Limit参数)或最大1 MB的数据,然后使用FilterExpression对结果应用任何筛选.如果响应中存在LastEvaluatedKey,则需要对结果集进行分页.有关详细信息,请参阅《Amazon DynamoDB开发人员指南》中的分页结果.

The bottom line is that you will need to paginate to achieve 10 items.

我的建议是,您永远不应该在需要CONTAINS来查找分区键的地方对数据进行建模

Javascript相关问答推荐

判断现代浏览器中的点击是否由touch 触发

可以将SuperTest导入为ES 6模块吗?

我的JS代码将按照哪个序列被解释

订阅操作顺序

React redux状态未在React-Router库中呈现

在shiny 模块中实现JavaScript

如何通过继承contentitable属性的元素捕捉keydown事件?

有Angular 的material .未应用收件箱中的价值变化

为什么从liveWire info js代码传递数组我出现错误?

通过使用100%间隔时间来代表我们还剩多少时间来倒计时

Plotly热图:在矩形上zoom 后将zoom 区域居中

Exceljs:我们在file.xlsx(...)&#中发现了一个问题'"" 39人;

将自定义排序应用于角形数字数组

点击按钮一次有文本出现和褪色,而不是点击两次?(html,CSS,JavaScript)

如何禁用附加图标点击的v—自动完成事件

为什么当我解析一个promise时,输出处于挂起状态?

在Reaction中的handleSubmit按钮内,useSelector值仍然为空

VSCode中出现随机行

使用线性插值法旋转直线以查看鼠标会导致 skip

如何在AG-Grid文本字段中创建占位符