firebase - 如何阻止 Firebase 创建额外的嵌套对象或如何访问新生成的字符串?

标签 firebase firebase-realtime-database

问题:每当我向 orders 数组添加订单时,都会添加一个额外的嵌套数组元素 (-KOPWA...) 。我不介意,除非我不知道如何访问该嵌套字符串来访问它的子节点。

以下用户的数据库节点示例:

enter image description here

firebase.database().ref('users/'+userIdState+'/orders/'+<<unique numbervariable>>).push({
  "order":{"test":"product","quantity":2}
});

我使用上面的代码将具有唯一编号的新 json 对象推送到 firebase 数组。仍然会生成带有奇怪字符串的嵌套数组。

任何人都可以帮助我了解如何:使用自己的唯一字符串创建自己的嵌套数组,或者如何访问从 firebase 生成的嵌套字符串,以便我可以访问它的子节点。 用户将生成嵌套数组的多个实例。

非常感谢任何帮助。

谢谢, 萌

最佳答案

您遇到此行为是因为 Firebase 的 push 与数组 push 不同。我建议阅读this article了解它是如何工作的。

至于解决方案,您只需将代码中的 push 更改为 set 即可。这将创建您(大概)期望的结构,即

1:
  order:
    ...

但是,如果您允许并发写入(即,如果示例中的“唯一编号”并不总是唯一),则这可能是不安全的。

Afaik Firebase 建议使用 push 安全地创建集合/“数组”。您可以通过调用 push 返回的引用上的 key 属性来检索生成的 key 。像这样:

var ref = firebase.database().ref('users/'+userIdState+'/orders/'+<<unique numbervariable>>).push({
  "order":{"test":"product","quantity":2}
});
var generatedKey = ref.key; // the value you're looking for

如果您决定使用它,您可能可以删除您现在拥有的订单号并仅使用生成的订单号。

关于firebase - 如何阻止 Firebase 创建额外的嵌套对象或如何访问新生成的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38788697/

相关文章:

firebase - Cloud Functions for Firebase 能否跨项目使用?

json - 查询 Firebase 数据库 Swift

java - 如何返回 DataSnapshot 值作为方法的结果?

javascript - Firebase 函数 : Cannot read property 'val' of undefined

swift - 获取当前用户发布的消息列表

android - 根据BuildType选择 flavor

Firebase 托管静态文件服务非常慢

ios - 无法获得对Firebase数据库IOS的许可

google-app-engine - Cloud Functions for Firebase 免费套餐中的 “No Outbound Networking” 到底是什么意思?

javascript - 当 firebase 函数在另一个文件中时,如何让它保持打开状态