如何使用 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) 之外创建新的父节点?的主要内容,如果未能解决你的问题,请参考以下文章