Javascript 请求大小太大

Javascript 请求大小太大,javascript,azure,azure-cosmosdb,Javascript,Azure,Azure Cosmosdb,我已经为bulkInsert编写了存储过程,在这里我还处理SP的超时。尽管如此,我在执行SP时仍遇到“请求大小太大”异常。请帮助我,我错在哪里。我只从pluralsight获取了所有代码。并以与他们相同的方式处理 function spBulkInsert(docs){ if (!docs) { throw new Error('Documents array is null or not defined!'); } var context = getCo

我已经为bulkInsert编写了存储过程,在这里我还处理SP的超时。尽管如此,我在执行SP时仍遇到“请求大小太大”异常。请帮助我,我错在哪里。我只从pluralsight获取了所有代码。并以与他们相同的方式处理

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);
                }
var totalInsertedCount=0;
while(totalInsertedCount
无论写入发生在何处(SP或API或门户中),Cosmos DB中的文档大小始终有2MB的限制。在提交给Cosmos DB之前,必须在客户端拆分/卸载/链接/链接文档。

正如摘要所示,
请求中的文档大小超过了请求允许的文档大小。允许的最大文档大小为2MB。
如上所述

存储过程批量导入数据
是一个执行存储过程的过程,只有一个HTTP请求,每个HTTP请求请求的文档大小受
2MB
以下的Cosmos DB限制

建议

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


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

您要向存储过程传递多少数据?如果没有更多的细节,就很难知道错误的原因。请相应地编辑您的问题。是!我正在传递大于2MB的数据。但在SP中,我在isAccepted变量中处理它。此外,我还可以共享SP处理代码。@Shraddha您好,Shraddha。请首先确保每个文档的大小不超过2MB。根据我的经验,您的错误是由于bulkimport一次执行的数据过多造成的。请求超时,SDK将自动回滚并重试。然而,在您的代码中,我建议您剪切要导入的数据,并在不改变吞吐量的情况下手动重试异常。文档的大小非常完美。我添加了只向存储过程发送2MB的代码,它现在运行良好。我当时的想法是,无论我将向SP发送多少文档,它都将在那里处理。但我错了。我总是只需要将高达2MB的数据传递给SP。我想这就是我现在的结论。