如何使用 Cloud Functions (Typescript) 在 Firebase 实时数据库中的 .ref(/path) 之外创建新的父节点?

Posted

技术标签:

【中文标题】如何使用 Cloud Functions (Typescript) 在 Firebase 实时数据库中的 .ref(/path) 之外创建新的父节点?【英文标题】:How to create a new parent node outside the .ref(/path) in Firebase Realtime Database using Cloud Functions (Typescript)? 【发布时间】:2020-07-11 15:38:29 【问题描述】:

所以基本上我希望我的 Cloud Functions 在“代理”中有新节点时创建一个名为“Civil”的新父节点。 这是我尝试过的代码:

import * as functions from 'firebase-functions';

export const addCivilData = functions.database
.ref('/Agent/AgentID')
.onCreate((snapshot, context) => 

    const userData = snapshot.val() 
    const newUsername = userData.username
    const defCivilStatus: string = "new"

    return snapshot.ref.parent?.child('Civil').child(`$newUsername`).update(`$defCivilStatus`)
)

那个? VSCODE 自动生成 parent 并显示一些关于鼠标悬停的规则。

如果我删除那个“?”它在snapshot.ref.parent 上给出了红色下划线。

我想创建一个父节点“Civil”和获取用户名的子节点,并将其值设置为 defCivilStatus。 请帮忙

编辑: 其他错误截图

【问题讨论】:

评论不用于扩展讨论;这个对话是moved to chat。 【参考方案1】:

你可以试试这个:

const functions = require('firebase-functions');

// The Firebase Admin SDK to access the Firebase Realtime Database.
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.addCivilData = functions.database
.ref('/Agent/AgentID')
.onCreate((snapshot, context) => 

 const userData = snapshot.val();
 console.log('userData', userData);
 const newUsername = userData.username;
 console.log('newUsername', newUsername);
 const defCivilStatus = "new";
         return snapshot.ref.parent.parent.child('Civil').child(`$newUsername`).set(`$defCivilStatus`);
);

并遵循 firebase 功能。日志

使用! 符号是IDE 在return snapshot.ref.... 行显示任何错误,如下面的代码所示:

return snapshot.ref.parent!.parent!.child('Civil').child(`$newUsername`).set(`$defCivilStatus`);

【讨论】:

我会尽快让你知道输出。忙碌的自动取款机。但是你能解释一下这如何解决最后一行的父问题吗?我希望父母不是空的。但问题是否已解决? 问题不在于 ref.parent。问题是更新功能。在这一行。更新失败 我在返回线之前有一个console.log(" ")。它有效,但返回语句是错误的。所以返回语句可能是错误。 我可以用exports const addCivilData代替exports.addCivilData吗?? 文档中没有这种用法

以上是关于如何使用 Cloud Functions (Typescript) 在 Firebase 实时数据库中的 .ref(/path) 之外创建新的父节点?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Cloud Functions 连接 Google Cloud SQL?

如何在 Angular 组件中正确使用 Cloud Functions?

如何通过 Cloud Functions 将文件上传到 Cloud Storage 并使用 Firestore 控制对 Cloud Storage 的访问?

如何使用 Cloud Functions for Firebase 获取子值的键?

IBM Cloud Functions:如何使用 Terraform 创建安全的 Web 操作

如何让 Google Cloud Functions 保持温暖?