当我想使用网址(例如www.abc.com/1234)时,我收到了错误消息:
First argument must be a valid firebase URL and the path can't contain ".", "#", "$", "[", or "]".
在无架构数据库中,URL不能用作密钥?我有什么选择?我仍然需要使用URL作为密钥有效地搜索网站对象。我不想查询所有内容并自己遍历它们。
这是我的预期设计。
{
"websites": [
{
"www.abc.com/1234": {
"visits": 100,
"likes": 20
}
},
{
"www.abc.com/8888": {
"visits": 300,
"likes": 30
}
},
{
"www.uber.com/jobs": {
"visits": 400,
"likes": 50
}
}
]
}
答案 0 :(得分:2)
答案 1 :(得分:1)
使用Firebase的推送ID作为密钥,并将网站网址存储为属性。例如:
{
"websites": {
"-KCm4eCdDOiOqYU30y_a": {
"url": "www.abc.com/1234",
"visits": 100,
"likes": 20
},
"-KCm3gJvnsvAi9qRMqv_": {
"url": "www.abc.com/8888",
"visits": 300,
"likes": 30
},
"-KCm3f4lB1nIZKDSeXFG": {
"url": "www.uber.com/jobs",
"visits": 400,
"likes": 50
}
}
}
然后,当您需要根据其网址获取特定子项时,您可以使用orderByChild('url').equalTo('www.uber.com/jobs')
。 Docs on complex queries