【发布时间】:2020-08-08 20:35:44
【问题描述】:
当在现有 Firestore 文档中创建字段时,我想在 firebase 实时数据库中创建一个新节点。
我一直在尝试这个:
exports.addUserCredentials = functions.firestore
.document(`Users/{UserID}/{username}`)
.onCreate((snapshot, context) => {
const newUserData = snapshot.data()
const newUserUsername = newUserData
const newUserUidDoc = context.params.UserID
return admin.database().ref(`/userCredentials/${newUserUsername}`).set({"UID": newUserUidDoc})
})
我在网上搜索过,我发现路径必须指向一个文档而不是一个集合。但是路径中的username 是文档中的字段。
我在部署时遇到了这个错误,我已经看到了所有类似的问题,但这些问题并没有完美地回答我的问题:
! functions: failed to update function addUserCredentials
HTTP Error: 400, The request has errors
原因是不能将我的路径更改为Users/{UserID},这将使我的代码完美运行,因为没有立即添加文档字段。
这是我的 Firestore 结构的屏幕截图:
文档的4个字段分2批更新。
首先添加 EMAIL 和 timeCreated 字段,然后创建文档。 而另一方面,phoneData 和 username 字段在 Email 和 timeCreated 5 秒后被创建 [未更新]。
因此,如果我在路径 Users/{UserID} 上使用 onCreate(),它将返回 UNDEFINED 到我的实时数据库,因为在那一刻用户名字段不存在。
有没有办法在文档的特定字段上应用onCreate()?
[我这样做是为了创建一个包含用户名和 UID 的单独节点,这是为了在新用户尝试注册时检查用户名是否存在]
因此,如果节点是使用值 undefined 创建的,这将是一个问题。
会是这样的:
【问题讨论】:
标签: firebase firebase-realtime-database google-cloud-firestore