我有数据,其中我试图遵循Firebase关于平面结构的建议,因此我没有超出我需要的数量。最终结果是我在这样的节点中组织了引号:
quotes -> clientName -> quoteObject
quoteObjects有一个'dateCreated'值,我希望能够像这样提取这些数据(因为当我拉出一个特定页面的所有引号的大列表时,我然后使用object assign来制作要显示的一大类对象):
const quotesRef = firebase.database().ref('quotes');
quotesRef.orderByChild('dateCreated').on('value', snapshot => {
// function
});
不幸的是,dateCreated值超过一个级别,因此标准查询不起作用。我知道如果您知道父路径,则可以执行深层路径查询,但在我的情况下,clientName父项始终是唯一的。鉴于此,是否可以指定一种通配符路径?如果是这样,我该怎么办呢?干杯!
编辑:显示数据库示例,抱歉最初应该更具体。
quotes
- ClientEmailOne
-UniqueQuoteID
- createdBy: ClientEmailOne
- dateCreated: 1479255005172
- email: "clientsEmail@example.com"
- ClientEmailTwo
-UniqueQuoteID
- createdBy: ClientEmailTwo
- dateCreated: 1479255005172
- email: "clientsEmail@example.com"
- ClientEmailThree
-UniqueQuoteID
- createdBy: ClientEmailThree
- dateCreated: 1479255005172
- email: "clientsEmail@example.com"
-UniqueQuoteID
- createdBy: ClientEmailThree
- dateCreated: 1479255005172
- email: "clientsEmail@example.com"
-UniqueQuoteID
- createdBy: ClientEmailThree
- dateCreated: 1479255005172
- email: "clientsEmail@example.com"
答案 0 :(得分:5)
Firebase会考虑您运行查询的位置的子项。您指定在上订购/过滤的子项可以包含属性的路径,但不能包含任何通配符。
<强>更新强>:
使用您的新数据结构,您似乎正在尝试跨所有客户端以及每个客户端的所有引号进行查询。其中有两个通配符(&#34;所有客户&#34;和#34;所有引号&#34;在此之下),Firebase的查询模型不允许。
您当前的模型允许查询特定客户的所有报价:
from collections import Counter
text = 'Some text from your file that you have read into this variable'
print(sorted(map(len, text.split())))
word_lengths = {}
# cumulate number of words
total = 0
for k,v in sorted(Counter(map(len, text.split())).items()):
total += v
word_lengths[k] = total
print(word_lengths)
# {8: 12, 3: 1, 4: 11}
如果要查询所有客户端的所有引号,您需要添加包含所有引号的数据结构(无论其客户端如何):
ref.child("quotes").child("ClientEmailOne").orderByChild("dateCreated")
然后你可以查询:
allquotes
-UniqueQuoteID
- createdBy: ClientEmailOne
- dateCreated: 1479255005172
- email: "clientsEmail@example.com"
-UniqueQuoteID
- createdBy: ClientEmailTwo
- dateCreated: 1479255005172
- email: "clientsEmail@example.com"
-UniqueQuoteID
- createdBy: ClientEmailThree
- dateCreated: 1479255005172
- email: "clientsEmail@example.com"
-UniqueQuoteID
- createdBy: ClientEmailThree
- dateCreated: 1479255005172
- email: "clientsEmail@example.com"
-UniqueQuoteID
- createdBy: ClientEmailThree
- dateCreated: 1479255005172
- email: "clientsEmail@example.com"