Firebase Cloud Functions return 错误值
Firebase Cloud Functions return wrong value
每当我的 Firestore 数据库中发生特定写入时,我都会 运行 关注函数。计数器得到应有的更新,而且如果我检查我的实时数据库中的值,它会显示正确的值。但是,如果我查询 then() 中的值,它总是 returns 1. 如果我将我的交易更改为始终将计数器增加 3,那么它 returns 3. 我做错了什么?
exports.someFunc = functions.firestore.document("/statistics/{userId}/postStats/{postId}/views/{user}/views/{view}").onCreate((event) => {
const userId = event.params.userId
const postId = event.params.postId
return admin.database().ref(`/statistics/${userId}/${postId}/views`).transaction(function(current) {
return current + 1;
}).then(admin.database().ref(`/statistics/${userId}/${postId}/views`).once('value').then(function(snapshot) {
console.log(snapshot.val())
);
});
我不太确定发生了什么。但是无论如何您都不必重新读取该值,因为它已作为参数传递给 promise。通过以下方式获取:
exports.someFunc = functions.firestore.document("/statistics/{userId}/postStats/{postId}/views/{user}/views/{view}").onCreate((event) => {
const userId = event.params.userId
const postId = event.params.postId
return admin.database().ref(`/statistics/${userId}/${postId}/views`).transaction(function(current) {
return current + 1;
}).then(function(committed, snapshot) {
console.log(snapshot.val())
);
});
每当我的 Firestore 数据库中发生特定写入时,我都会 运行 关注函数。计数器得到应有的更新,而且如果我检查我的实时数据库中的值,它会显示正确的值。但是,如果我查询 then() 中的值,它总是 returns 1. 如果我将我的交易更改为始终将计数器增加 3,那么它 returns 3. 我做错了什么?
exports.someFunc = functions.firestore.document("/statistics/{userId}/postStats/{postId}/views/{user}/views/{view}").onCreate((event) => {
const userId = event.params.userId
const postId = event.params.postId
return admin.database().ref(`/statistics/${userId}/${postId}/views`).transaction(function(current) {
return current + 1;
}).then(admin.database().ref(`/statistics/${userId}/${postId}/views`).once('value').then(function(snapshot) {
console.log(snapshot.val())
);
});
我不太确定发生了什么。但是无论如何您都不必重新读取该值,因为它已作为参数传递给 promise。通过以下方式获取:
exports.someFunc = functions.firestore.document("/statistics/{userId}/postStats/{postId}/views/{user}/views/{view}").onCreate((event) => {
const userId = event.params.userId
const postId = event.params.postId
return admin.database().ref(`/statistics/${userId}/${postId}/views`).transaction(function(current) {
return current + 1;
}).then(function(committed, snapshot) {
console.log(snapshot.val())
);
});