请求大小太大

时间:2017-09-13 14:20:58

标签: javascript azure azure-cosmosdb

我已经为bulkInsert编写了存储过程,我也在处理SP的超时。执行SP时,我仍然收到“请求大小太大”异常。给予SP以下。请帮助我,我错了。我只从复数中获取了所有代码。并以与他们相同的方式处理。

function spBulkInsert(docs){
    if (!docs) {
        throw new Error('Documents array is null or not defined!');
    }
    var context = getContext();
    var collection = context.getCollection();
    var response = context.getResponse();

    var docCount = docs.length;

    if (docCount == 0) {
        response.setBody(0);
        return;
    }
    var count = 0;
    createDoc(docs[0]);

    function createDoc(doc) {
        var isAccepted = collection.createDoucument(collection.getSelfLink(), doc, docCreated);
        if (!isAccepted) {
            response.setBody(count);
        }
    }
    function docCreated(err, doc) {
        if (err) throw err;
        count++;
        if (count == docCount) response.setBody(count);
        else createDoc(docs[count]);
    }
};

上述SP处理代码:

var totalInsertedCount=0;
                while (totalInsertedCount < data.Count)
                {
                    var insertedCount = await client.ExecuteStoredProcedureAsync<int>(
                                            UriFactory.CreateStoredProcedureUri("TestDoc", "coll", "spBulkInsert"),
                                            new RequestOptions { PartitionKey = new PartitionKey("partitionKey") }, data);
                    totalInsertedCount += insertedCount;
                    Console.WriteLine("Inserted {0} documents ({1} total, {2} remaining)", insertedCount, totalInsertedCount, data.Count - totalInsertedCount);
                    data= data.GetRange(insertedCount, data.Count - insertedCount);
                }

2 个答案:

答案 0 :(得分:0)

无论写入的位置(SP或API或门户网站)如何,Cosmos DB中的文档大小始终有2MB的限制。在提交给Cosmos DB之前,必须在客户端对文档进行拆分/解除/链接/链接/等。

答案 1 :(得分:0)

正如摘要The document size in the request exceeded the allowable document size for a request. The max allowable document size is 2MB.提及here

Stored Procedure Bulk importing data是执行存储过程的过程,只有一个HTTP请求,每个HTTP请求所请求文档的大小受2MB以下的Cosmos DB的限制。

<强> 建议

1.您可以拆分文档数据并批量导入。

2.您可以尝试简化文档数据,例如删除不必要的''和'\ n'等。