首页 > 解决方案 > 如何在 firebase 实时数据库中使用更新值?

问题描述

所以我现在正在使用 Cloud Functions。我正在做的是这样的:

export const onMessageCreate = functions.database.ref('/Users/{user}/{message}/{text}').onCreate((snapshot, context) => {
      const data = snapshot.val()
      const changedData: string = change(byteData.text)
      return snapshot.ref.update({id: compressedByteData}) //This is the problem
  })

change(input: string): string是我的一个自定义功能,它只是用生日蛋糕表情符号替换每个出现的生日快乐这个词。然而,在我的参考中,事情是这样的:"/Users/{user}/master/{messageGroup}/content/{message}"我想更新文本的值。但是,由于我不知道是什么{text},因此无法将其存储在正确的位置。有人有什么建议吗?

change()功能是:

function change(data:string):string {
       return data.replace(/\bhappy-birthday\b/g, '')
}

这是 Firebase 节点图片: Firebase 节点设置

所以我想用我的云函数更改 01、02、03(值无关紧要)。

我想做的事情的视觉表现: 视觉表现

标签: javascripttypescriptfirebasegoogle-cloud-functions

解决方案


您的评论后的新更新:

如果我正确理解您的最后评论,这应该可以解决问题:

export const onMessageCreate = functions.database.ref('/Users/{user}/master/{messageGroup}/content/{message}').onCreate((snapshot, context) => {
      const data = snapshot.val();
      const changedData: string = change(byteData.text);

      const user = context.params.user;
      const messageGroup = context.params.messageGroup;

      return admin.database().ref(`/Users/${user}/master/${messageGroup}/content`).update({4f3f: changedData}); 

  })

根据您的评论更新:

抱歉,但不是 100% 清楚您要更新的内容。

如果你想用 的值“更改/Users/{user}/master/{messageGroup}/content/{message}(你)创建值时/Users/{user}/master/{messageGroup}/content/{message}的值” changedData,只需执行以下操作:

export const onMessageCreate = functions.database.ref('/Users/{user}/master/{messageGroup}/content/{message}').onCreate((snapshot, context) => {
      const data = snapshot.val();
      const changedData: string = change(byteData.text);
      return snapshot.ref.update({message: changedData}); 
  })

在您的云功能中,您将能够通过以下方式获取路径值

const user = context.params.user;
const message = context.params.message;

然后构建所需的节点引用。


正如您在文档中所读到的:

您可以通过用大括号括起来将路径组件指定为通配符;ref('foo/{bar}')匹配/foo. 这些通配符路径组件的值在函数的 EventContext.params 对象中可用。在此示例中,该值可用作 event.params.bar。


推荐阅读