我希望所有来自Firebase的子列表都在android中.
我已经实现了这个代码,但它不起作用.
mFirebaseRef = new Firebase(FIREBASE_URL);
mFirebaseRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<String> td = (ArrayList<String>) dataSnapshot.getValue();
//notifyDataSetChanged();
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
Run Code Online (Sandbox Code Playgroud) 我有一个使用angularFire隐式数据同步的Firebase对象列表,我想使用其他数据属性呈现它们的唯一ID(用于url)ng-repeat.我可以angularFire以这样一种方式返回,即我可以访问其中的对象ID ng-repeat,就像angularFireCollection拥有$id属性的成员一样吗?如果没有,那么实现这一目标的正确方法是什么?假设代码(不起作用):
控制器:
myApp.controller('ItemListCtrl', ['$scope', 'angularFire',
function ItemListCtrl($scope, angularFire) {
var ref = new Firebase(firebaseUrl);
angularFire(ref, $scope, 'items');
}
]);
Run Code Online (Sandbox Code Playgroud)
视图:
<div ng-repeat="item in items" >
<a href="" ng-href="#/items/{{item.name()}}">{{item.text}}</a>
</div>
Run Code Online (Sandbox Code Playgroud) Results
- auto generated ID
- auto generated ID
value1: abc
value2: def
Run Code Online (Sandbox Code Playgroud)
我希望能够查询“value2”在哪里等于某个特定值。我从一个参考开始:
let ref = FIRDatabase.database().reference().child("Results")
Run Code Online (Sandbox Code Playgroud)
由于我不知道自动生成的 ID 以便提供路径,我是否需要先获取它们才能确定可以使用的值.queryEqualToValue?如果是这样,我是不是只是抓取每条记录来查找一个值,而不是使用某种索引来只抓取那些value2等于某个值的记录?
最后,我想要一个查询,返回所有value2等于某个值的“记录” 。感觉就像我需要遍历每条记录才能做到这一点。我觉得我在这里错过了一些东西。
更新:
我试过了:
self.ref.queryOrderedByKey().queryEqual(toValue: "def", childKey: "value2").observeSingleEvent(of: .value, with: {(snapshot) in
print(snapshot) })
Run Code Online (Sandbox Code Playgroud)
这会因我在下面的评论中给出的错误而崩溃。
我试过了:
self.ref.queryOrdered(byChild: "value2").queryEqual(toValue: "def").observeSingleEvent(of: .childAdded, with: {(snapshot) in
Run Code Online (Sandbox Code Playgroud)
这永远不会执行闭包。如果我将观察者更改为".value"它返回 null。
如果我这样做:
self.ref.queryOrdered(byChild: "value2").observeSingleEvent(of: .childAdded, with: {(snapshot) in
Run Code Online (Sandbox Code Playgroud)
它实际上会对数据进行正确排序。".value"不管怎样,它都不会正确排序,添加queryEqualthen 不起作用,如上所述。
我有一个包含类别的 IOS 应用程序。我在 Firebase 上的存储如下所示:
-root
-Categories
-key
- color:
- name:
- sum:
-Expenses
-key
-amount:
-category:
-date:
-description:
-initiator:
-name:
Run Code Online (Sandbox Code Playgroud)
用户不得两次添加类别。我想让类别名称独一无二。在 Firebase 中可以做到吗?提前致谢。