首页 > 解决方案 > 从 azure 存储表中检索超过 1000 条记录 - js

问题描述

我有一个检索超过一千条记录的问题。不知何故,只检索了前 1000 个。从我的研究中,我发现我必须使用 getContinuation Token 来获取后续记录。请告知我应该如何将它添加到我的代码中。

tableService.queryEntities(table, tableQuery, null, function(error, results) {
    if (error) {
        alert('List table entities error, please open browser console to view detailed error');
        console.log(error);
    } else {
        //display records

});

标签: node.jsazureazure-storageazure-table-storage

解决方案


要根据您的代码使用回调,请使用递归。

var entities = [];
function queryEntitiesSegmented(table, tableQuery, continuationToken){
    tableService.queryEntities(table, tableQuery, continuationToken, (error, results)=> {
        if (error) {   console.log(error); } 
        else { 
            entities.push.apply(entities, results.entries);
            if(results.continuationToken){
                queryEntitiesSegmented(table, tableQuery, results.continuationToken);
            }
            else{
                entities.forEach(entity=>{
                   // display each one
                })
            }
        }
    });
}

queryEntitiesSegmented(table, tableQuery, null);

另一种选择是异步和等待。

const queryEntitiesSegmented = async(table, tableQuery, continuationToken)=>{
    return new Promise((resolve,reject)=>{
        tableService.queryEntities(table, tableQuery, continuationToken, (error, results)=> {
            if (error) {  reject(error); } 
            else { resolve(results);  }
        });
    });
}

async function queryAllEntities(){
    var tableQuery = new azure.TableQuery();
    var table = 'tableName';
    var continuationToken = null;
    var entities = [];
    do{
        var results =  await queryEntitiesSegmented(table, tableQuery, continuationToken);
        continuationToken = results.continuationToken;
        entities.push.apply(entities, results.entries);
    }
    while(continuationToken!=null);
    return entities;
}

queryAllEntities().then(entities=>{
    entities.forEach(entity=>{
    //display each one
    })
}).catch(error=>{ console.log(error); })

推荐阅读