gpt4 book ai didi

javascript - Firestore 事务在 Cloud Functions 中找不到数据

转载 作者:行者123 更新时间:2023-12-03 02:29:29 25 4
gpt4 key购买 nike

我正在为我的应用程序编写云函数。我使用的是 Firestore 而不是 RTDB。无论出于何种原因,我的函数无法正确读取 Firestore 中的值。当它尝试读取值时,它会读取未定义。我想要这个函数做的就是增加 following_count 值,并且我知道它正在寻找正确的位置,因为它用 NaN 替换了该值。如何更改代码才能正确读取 Firestore 值?提前致谢

exports.countfollowerschangeFirestore = functions.firestore.document('users/{userid}/following/{followingid}').onWrite(event => {
const collectionRef = event.data.ref.parent;
const countRef = collectionRef.parent;
var new_count;

var transaction = db.runTransaction(t => {
return t.get(countRef)
.then(doc => {
if (doc.exists) {
//This is where it is trying to read the data which should be a 0.
var new_count = doc.data.following_count + 1;
console.log(doc.data.following_count);
t.update(countRef, { following_count: new_count });
}
});
}).then(result => {
console.log('Transaction success!');
})
.catch(err => {
console.log('Transaction failure:', err);
});
});

最佳答案

db.runTransaction()返回一个在交易完成时解析的 promise 。您需要返回此 promise (或其从您正在使用的 promise 链派生的 promise )。从函数中确保 Cloud Functions 等待工作完成。否则,您可能会观察到不可预测的结果。

return db.runTransaction(t => { ... }).then(...).catch(...)

代码中的另一个问题是 doc.data是方法调用而不是属性,因此应该像这样使用:doc.data()。从技术上讲,它也是一个“快照”,而不是文档,因此我将变量的名称更新为更清晰。

关于javascript - Firestore 事务在 Cloud Functions 中找不到数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48798260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com