首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助在.net文档数据库客户端sdk上使用documentdb-lumenize

需要帮助在.net文档数据库客户端sdk上使用documentdb-lumenize
EN

Stack Overflow用户
提问于 2015-12-08 05:06:10
回答 2查看 396关注 0票数 0

我遇到了一个问题,在.net客户端中使用聚合存储的lumenize .net。当尝试传入参数并将其查询到storedproc时,会出现错误。下面是我的代码

代码语言:javascript
复制
 public async static void QuerySP()        {
            using (client = new DocumentClient(new Uri(endpointUrl), authorizationKey))
            {
                //Get the Database
                var database = client.CreateDatabaseQuery().Where(db => db.Id == databaseId).ToArray().FirstOrDefault();

                //Get the Document Collection
                var collection = client.CreateDocumentCollectionQuery(database.SelfLink).Where(c => c.Id == collectionId).ToArray().FirstOrDefault();

                StoredProcedure storedProc = client.CreateStoredProcedureQuery(collection.StoredProceduresLink).Where(sp => sp.Id == "cube").ToArray().FirstOrDefault();             


                dynamic result =  await client.ExecuteStoredProcedureAsync<dynamic>(storedProc.SelfLink, "{cubeConfig: {groupBy: 'publication', field: 'pid', f: 'count'}, filterQuery: 'SELECT pid, publication FROM c'}");
                Console.WriteLine("Result from script: {0}\r\n", result.Response);
            }
}

在执行代码时,我会得到以下错误

消息:{“错误”:“在执行Javascript时遇到异常。Exception = Error: cubeConfig或savedCube required\r\nStack跟踪: Error: cubeConfig或savedCube required\n at fn (cube.js:1803:7)\n at __docDbMain (cube.js:1844:5)\n在未知脚本代码(cube.js:1:2)"}

不知道我做错了什么。我真的很感谢你的帮助。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-08 17:36:46

你差点就有了。问题是,您是以字符串的形式发送cubeConfig的。它必须是一个物体。下面是这样做的代码:

代码语言:javascript
复制
string cubeConfigString = @"{
    cubeConfig: {
        groupBy: 'publication', 
        field: 'pid', 
        f: 'count'
    }, 
    filterQuery: 'SELECT * FROM c'
}";

Object cubeConfig = JsonConvert.DeserializeObject<Object>(cubeConfigString);
Console.WriteLine(cubeConfig);

dynamic result = await client.ExecuteStoredProcedureAsync<dynamic>("dbs/dev-test-database/colls/dev-test-collection/sprocs/cube", cubeConfig);

Console.WriteLine(result.Response);
票数 1
EN

Stack Overflow用户

发布于 2015-12-10 03:05:40

我的工作代码

代码语言:javascript
复制
public async static Task QuerySP2()
    {
        using (client = new DocumentClient(new Uri(endpointUrl), authorizationKey))
        {
            //Get the Database
            var database = client.CreateDatabaseQuery().Where(db => db.Id == databaseId).ToArray().FirstOrDefault();

            //Get the Document Collection
            var collection = client.CreateDocumentCollectionQuery(database.SelfLink).Where(c => c.Id == collectionId).ToArray().FirstOrDefault();

            StoredProcedure storedProc = client.CreateStoredProcedureQuery(collection.StoredProceduresLink).Where(sp => sp.Id == "cube").ToArray().FirstOrDefault();

            string filterQuery = string.Format(@"SELECT * from c");

            string cubeConfigString = @"{
                cubeConfig: {
                    groupBy: 'publication', 
                    field: 'id', 
                    f: 'count'
                }, 
                filterQuery: '" + filterQuery + "'}";

            dynamic cubeConfig = JsonConvert.DeserializeObject<dynamic>(cubeConfigString);
            Console.WriteLine(cubeConfig);

            string continuationToken = null;

            dynamic result=null;
            do
            {


                var queryDone = false;
                while (!queryDone)
                {
                    try
                    {
                        result = await client.ExecuteStoredProcedureAsync<dynamic>(storedProc.SelfLink, cubeConfig);
                        cubeConfig = result.Response;
                        continuationToken = cubeConfig.continuation;
                        queryDone = true;
                    }
                    catch (DocumentClientException documentClientException)
                    {
                        var statusCode = (int)documentClientException.StatusCode;
                        if (statusCode == 429 || statusCode == 503)
                            System.Threading.Thread.Sleep(documentClientException.RetryAfter);
                        else
                            throw;
                    }
                    catch (AggregateException aggregateException)
                    {
                        if (aggregateException.InnerException.GetType() == typeof(DocumentClientException))
                        {

                            var docExcep = aggregateException.InnerException as DocumentClientException;
                            var statusCode = (int)docExcep.StatusCode;
                            if (statusCode == 429 || statusCode == 503)
                                System.Threading.Thread.Sleep(docExcep.RetryAfter);
                            else
                                throw;
                        }
                    }
                }



            } while (continuationToken != null);

            Console.WriteLine("Result from script: {0}\r\n", result.Response);


        }


    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34148405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档