问题:每当我向订单数组添加订单时,都会添加一个额外的嵌套数组元素( -KOPWA ... ) 。我不介意,除了,我不知道如何访问该嵌套字符串以访问它的子节点。
以下用户的数据库节点示例:
firebase.database().ref('users/'+userIdState+'/orders/'+<<unique numbervariable>>).push({
"order":{"test":"product","quantity":2}
});
我使用上面的代码将具有唯一编号的新json对象推送到firebase数组。仍会生成带有奇怪字符串的嵌套数组。
任何人都可以帮助我理解如何:使用我自己的唯一字符串创建自己的嵌套数组,或者如何访问从firebase生成的嵌套字符串,以便我可以访问它#s; s儿童节点。 用户将生成多个嵌套数组实例。
非常感谢任何帮助。
谢谢, 萌
答案 0 :(得分:3)
您遇到此行为是因为Firebase的push
与数组push
不同。我建议您阅读this article以了解其工作原理。
对于解决方案,您只需在代码中将push
更改为set
即可。这将创建您(可能)期望的结构,即
1:
order:
...
如果允许并发写入(即,如果示例中的“唯一编号”并非总是唯一的),则这可能是不安全的。
Afaik Firebase建议使用push
安全地创建集合/“数组”。您可以通过调用key
返回的引用上的push
属性来检索生成的密钥。像这样:
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
如果你决定使用它,你可以直接删除你现在的订单号,然后只使用生成的订单号。