dsl*_*101 6 javascript google-cloud-firestore
我在云函数中有以下代码,该消息返回错误消息
错误: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)
Run Code Online (Sandbox Code Playgroud)
但是,firebase日志在抛出错误之前就显示了这一点:
12:28:19.963 PM classifySources ZklZYB5hq96J43CroKgP doClassifySources: Got 310 items
Run Code Online (Sandbox Code Playgroud)
在我看来,该批次应包含310个项目,远低于500个限制。我在计算500个项目的限额时是否缺少某些东西?是否merge: true影响以任何方式?这与item正在写入的对象的传播有关(即,这是否会增加所需的写入次数)?
经过一些额外的测试,看来将admin.firestore.FieldValue.serverTimestamp()计数用作额外的“写”操作。使用上面的代码,我限于249个项目(即,当output.length >= 250代码将失败并显示该错误消息。如果删除对的引用serverTimeStamp(),则每次写入最多可以获取499个项目。
我在任何地方都找不到此文档,也许它是firebase库中的一个错误,所以我将在此发布一个问题,然后看看会发生什么。
| 归档时间: |
|
| 查看次数: |
644 次 |
| 最近记录: |