Google云发布/订阅功能在查询FireStore时提供请求的快照版本太旧 [英] Google cloud pub/sub function gives "The requested snapshot version is too old" when querying firestore
本文介绍了Google云发布/订阅功能在查询FireStore时提供请求的快照版本太旧的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个对集合执行简单查询的gCloud发布/订阅函数。在10月8日之前,它运行得很好。现在我看到";请求的快照版本太旧的错误消息。
我已经使用相同的代码创建了一个HTTP函数,并手动运行它,它工作得非常好。
下面是函数:
// 0 3 * * * - at 03:00 AM every day
exports.GenerateRankings = functions.pubsub.schedule('0 3 * * *')
.onRun((context) => {
console.log("GenerateRankings Task started")
const playersCollection = admin.firestore().collection('players')
playersCollection.orderBy("Coin", "desc").get()
.then((qs) => {
console.log("Fetching Players by Coin")
// some staff
return true
})
.catch((error) => {
console.error("Error fetching players", error)
return false
})
})
下面是错误堆栈:
9 FAILED_PRECONDITION: The requested snapshot version is too old.
at Object.callErrorFromStatus (/workspace/node_modules/@grpc/grpc-js/build/src/call.js:31:26)
at Object.onReceiveStatus (/workspace/node_modules/@grpc/grpc-js/build/src/client.js:327:49)
at Object.onReceiveStatus (/workspace/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:305:181)
at /workspace/node_modules/@grpc/grpc-js/build/src/call-stream.js:124:78
at processTicksAndRejections (internal/process/task_queues.js:79:11)
Caused by: Error
at Query._get (/workspace/node_modules/@google-cloud/firestore/build/src/reference.js:1466:23)
at Query.get (/workspace/node_modules/@google-cloud/firestore/build/src/reference.js:1455:21)
at /workspace/index.js:22:47
at cloudFunction (/workspace/node_modules/firebase-functions/lib/cloud-functions.js:130:23)
at /layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/invoker.js:198:28
at processTicksAndRejections (internal/process/task_queues.js:97:5) {
code: 9,
details: 'The requested snapshot version is too old.',
metadata: Metadata { internalRepr: Map {}, options: {} }
}
我知道还有另一个悬而未决的问题
"The requested snapshot version is too old." error in Firestore
跟这个差不多。我在使用发布/订阅函数时遇到了这个问题。
感谢您的帮助。
推荐答案
如果有人遇到此问题,我会自己回答问题。
经过大量阅读和测试后,我注意到我的日志中有一个警告,如";函数返回未定义、预期的承诺或值&。因为我在函数中返回承诺,所以我没有注意到这一点。
在我的函数上添加回车符修复了我的警告,并且我的函数已经成功运行了5天。
return exports.GenerateRankings = functions.pubsub.schedule('0 3 * * *') ...
这篇关于Google云发布/订阅功能在查询FireStore时提供请求的快照版本太旧的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文