JavaScript数据存储区API请求中的Dropbox 400错误

时间:2014-12-03 00:27:48

标签: dropbox-api

我试图通过Datastore JS API向Dropbox发布大量记录(2000-ish)。我收到了这个错误:

POST https://api12.dropbox.com/1/datastores/put_delta 400 (Bad Request)

...它引用:api12.dropbox.com/1/datastores/put_delta:1

调试时使用的信息不多,但我猜是因为我超出了大小限制。

我是如何解决此问题或至少进一步调试的?

更新

我在Chrome中使用了XHR检查器来获得此响应:

{"error": 
  {
  "size_limit": "Error: put_delta of delta (size 4138335) exceeds size limit 2097152 bytes",
  "object_type": "delta", 
  "limit": 2097152, 
  "size": 4138335
 }
}

1 个答案:

答案 0 :(得分:1)

在JS SDK中,每次代码将控制权交还给浏览器时,都会隐式“同步”。因此,如果您编写一个输入大量数据的for循环,那么所有数据都将转换为单个delta。你可以通过写较小的块来解决问题。例如,像这样的事情(未经测试,对不起,如果有一个错误或类似的话):

var LIMIT = 100; // how many things to write in a single delta

function writeThings(arrayOfThings) {

    // write up to LIMIT things
    for (var i = 0; i < arrayOfThings.length && i < LIMIT; i++) {
        writeSingleThing(arrayOfThings[i]);
    }

    if (i < arrayOfThings.length) {
        // more to write

        window.setTimeout(function () {
            // after a tick, continue from where we left off
            writeThings(arrayOfThings.slice(i));
        }, 1);
    } else {
        // done writing
    }

}