我试图通过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
}
}
答案 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
}
}