1

我已经实现了一种方法来计算从查询中检索到的所有实体。如果实体超过 1000,我使用延续令牌继续

public static function countResults($storageAccountName, $tableName, $filter, $projections = null)
{
    $count = 0;
    $options = null;
    $continue = false;
    do
    {
        $options = Azure::getEntitiesFromTable($storageAccountName, $tableName, $filter, $projections, $options);

        $currentResults = $options->getEntities();
        $count += count($currentResults);

        // if specified it means there are other results
        $continue = (!is_null($options->getNextPartitionKey()) && !is_null($options->getNextRowKey()));             

    } while ($continue);

    return $count; 
}

只需返回 QueryEntitiesResult 对象并将其用作执行过滤器的方法的输入,在该过滤器中获取分区键和行键并将它们设置为传递给 TableRestProxy->queryEntities 的 QueryEntitiesOptions 对象

所以没有任何东西应用于延续令牌。问题是 TableRestProxy->queryEntities 将 $this->_encodeODataUriValue 应用于 pkey 和 rowkey。这会使令牌无效,并且总是返回相同的前 1000 个结果。删除它的工作编码。这是图书馆的错误吗?

4

0 回答 0