我的数据库中有这样的结构:
User 1
+- items
+- 1
| |- question: some question
| |- answer: some answer
|
+- 2
|- question: another question
我想在第二项中添加答案,但是我没有ID。 我正在尝试获取物品,并且它会返回
[null,{answer:一些答案,一个问题:一个问题},{问题:另一个问题}]
但是如果没有answer
字段,我将无法获得所需的物品,而且我也无法获得其ID。
我尝试使用equalTo
,但没有帮助。
// attempt 1
Query child = _databaseReference.child(item._user).child(db_items).equalTo(null, key: db_answer);
child.reference().once().then((DataSnapshot snapshot) {
print('snapshot: ${snapshot.value}');
});
// attempt 2
Query child = _databaseReference.child(item._user).child(db_items).equalTo(null, key: db_answer);
child.reference().child(db_question).once().then((DataSnapshot snapshot) {
print('snapshot: ${snapshot.value}');
});
第一次尝试返回的输出与我上面写的相同,第二次返回null
那么,有人知道如何向第二个问题中添加answer
字段吗?
P.S。我使用Flutter,但我认为这对这个问题没有多大意义。
答案 0 :(得分:0)
因此,基本上,您试图在第二个项目中添加“答案”。 我会以这种方式做到这一点: 首先是事先知道密钥,以便我可以在第二项中插入一个子节点。这样,我可以写类似: myDBReference.child(“ items”)。child(“ key_known_beforehand”)。child(“ answer”)。setValue(“ this is ansewr”);
或者如果我不知道密钥,这似乎是这里的问题: 我会使用Firebase查询。就像是.. myDBReference.child(“ items”)。orderByValue()。startAt(starting_point_of_child_item).endAt(ending_point_of_child_item).child 该查询将为我提供所需的节点,我将在那里设置值。
”
Using startAt(), endAt(), and equalTo() allows you to choose arbitrary starting and ending points for your queries
要过滤数据,可以在构造查询时将任何limit方法或range方法与order-by方法结合使用。
Unlike the order-by methods, you can combine multiple limit or range functions. For example, you can combine the startAt() and endAt() methods to limit the results to a specified range of values.
”