Windows Azure Node.js SDK

标签 windows node.js azure

我想知道如何使用 Windows Azure Node.js SDK 获取延续 token ?例如,我现在使用 SDK 来从表中检索数据:

var tableService = azure.createTableService();

tableService.getTable('UsersUserFacebookActions', function (error) {
    if (error === null) {
        var query = azure.TableQuery
            .select()
            .from('UsersUserFacebookActions')
            .where('PartitionKey eq ?', userID)
            .and('Kind eq ?', 'User')
            .and('Deleted eq ?', 'false');

        tableService.queryEntities(query, function (error, userEntities) {
            if (error === null && userEntities.length > 0) {
                // check to see if access token needs extending
                extendAccessToken(userEntities[0], function (user) {
                    callback({
                        PartitionKey: user.PartitionKey,
                        RowKey: user.RowKey,
                        Kind: user.Kind,
                        EmailAddress: user.EmailAddress,
                        AccessToken: user.AccessToken,
                        TokenExpiration: user.TokenExpiration,
                        JoinDate: user.JoinDate,
                        ChannelCount: user.ChannelCount,
                        FollowCount: user.FollowCount,
                        ChannelCountString: accounting.formatNumber(user.ChannelCount),
                        FollowCountString: accounting.formatNumber(user.FollowCount),
                        Deleted: user.Deleted,
                        DeleteDate: user.DeleteDate
                    }); 
                });
            }
            else callback();
        });
    }
    else callback();
});

但是,我已经搜索了示例和文档,包括此站点:

https://www.windowsazure.com/en-us/develop/nodejs/

但没有遇到任何提及延续 token 的内容。

如有任何帮助或建议,我们将不胜感激。

最佳答案

根据源代码(第 481 行),如果存在继续标记,则“queryEntitiesResultContinuation”属性将添加到您的结果中:

https://github.com/WindowsAzure/azure-sdk-for-node/blob/master/lib/services/table/tableservice.js

它有一个名为“getNextPage”的函数,它需要回调:

https://github.com/WindowsAzure/azure-sdk-for-node/blob/master/lib/services/table/models/queryentitiesresultcontinuation.js

您可能应该创建一个单独的函数来处理查询结果。此函数将迭代实体,然后检查是否设置了“queryEntitiesResultContinuation”。如果是这样,请调用该函数,并将新函数作为回调传递。

我还没有实际尝试过,也找不到任何代码示例!

更新

以下是使用 Node 处理延续标记的代码示例:

var tableService = require("azure").createTableService();

function queryWithContinuation(query, cb) {
    tableService.queryEntities(query, function(error, entities, continuationToken){
        if (continuationToken.nextPartitionKey) { 
            nextPage(entities, continuationToken, cb);
        } else {
            cb(entities);                    
        }
    });
}

// used to recursively retrieve the results
function nextPage(entities, continuationToken, cb){
    continuationToken.getNextPage(function(error, results, newContinuationToken){
        entities = entities.concat(results);
        if (newContinuationToken.nextPartitionKey){
            nextPage(entities, newContinuationToken, cb);
        } else {
            cb(entities);
        }
    });
}

// example usage
var query = azure.TableQuery.select().from('really-big-table');
queryWithContinuation(query, function(results){
    console.log(results);
});

关于Windows Azure Node.js SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10648520/

相关文章:

windows - 如何使用 wix 创建虚拟帐户的示例

ios - 发现网络上安装了我的应用程序的计算机

windows - 根据用户模式故障转储找出 CPU 型号

javascript - 将 bootstrap.js 添加到 browserify?

javascript - 测试 Graphql Api 性能

azure - azure 配置服务出现格式错误的 token 异常

java - 为什么我的cmd程序总是自动暂停?

javascript - 模板字符串作为对象属性名称

Azure Yaml 架构批量触发器

没有公共(public)终结点的 Azure Functions