我在云函数中有以下代码,该代码返回错误消息
错误:3 INVALID_ARGUMENT:每个请求最多允许 500 次写入
console.log(`${projectId} doClassifySources: Got ${_.size(output)} items`)
const lastClassification = new Date().toJSON()
const batch = firestore.batch()
batch.update(projectRef, {lastClassification})
_.forEach(output, item => {
batch.set(projectRef.collection('output').doc(encodeURIComponent(item.url)), {
classifiedAt: admin.firestore.FieldValue.serverTimestamp(),
...item
}, {
merge: true
})
})
return batch.commit().then(() => lastClassification)
然而,Firebase 日志在引发错误之前显示了这一点:
12:28:19.963 PM classifySources ZklZYB5hq96J43CroKgP doClassifySources: Got 310 items
在我看来,该批次应包含 310 件物品,远低于 500 件的限制。我是否遗漏了 500 项限制的计算方式?是否merge: true
以任何方式影响它?是否与传播有关item
在正在写入的对象中(即,这是否会增加所需的写入次数)?
通过一些额外的测试,似乎使用admin.firestore.FieldValue.serverTimestamp()
算作额外的“写入”。使用上面的代码,我限制为 249 个项目(即当output.length >= 250
,代码将失败并显示该错误消息。如果我删除对serverTimeStamp()
,每次写入最多可以获取 499 个项目。
我在任何地方都找不到这个记录,也许这是 firebase 库中的一个错误,所以我将在那里发布一个问题,看看会发生什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)