问题:每当我向 orders 数组添加订单时,都会添加一个额外的嵌套数组元素 (-KOPWA...) 。我不介意,除非我不知道如何访问该嵌套字符串来访问它的子节点。
以下用户的数据库节点示例:
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/