Firebase云功能返回错误的值

问题描述 投票:0回答:1

每次在我的Firestore数据库中发生某次写操作时,我都在运行以下函数。计数器会像它应该更新,如果我检查我的实时数据库中的值,它会显示正确的值。但是,如果我在我的then()中查询值,它总是返回1.如果我将我的事务更改为总是将计数器增加3,那么它返回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())

    );

});
firebase firebase-realtime-database google-cloud-functions google-cloud-firestore firebase-admin
1个回答
1
投票

我不确定发生了什么事。但是你不应该重新读取这个值,因为它作为一个参数传递给了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())

  );

});
© www.soinside.com 2019 - 2024. All rights reserved.