Android 如何从firebase获取数据,然后将其推回
我坚持从firebase获取数据,然后在一些更改后将其推回 下面给出的代码解决了一些问题,因为我需要获取int并将其和另一个值的和推送到实时数据库一次,但它推了多次,在上一次之后,它超过了39K行,除了1Android 如何从firebase获取数据,然后将其推回,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我坚持从firebase获取数据,然后在一些更改后将其推回 下面给出的代码解决了一些问题,因为我需要获取int并将其和另一个值的和推送到实时数据库一次,但它推了多次,在上一次之后,它超过了39K行,除了1 private DatabaseReference ratingReference = FirebaseDatabase.getInstance().getReference().child(Consts.RATING_DB); public void setRating(String
private DatabaseReference ratingReference = FirebaseDatabase.getInstance().getReference().child(Consts.RATING_DB);
public void setRating(String uid, int addPoint) {
ratingReference.child(uid).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int rating = 0;
if (dataSnapshot.child(Consts.RATING).getValue() != null) {
rating = Integer.valueOf(dataSnapshot.child(Consts.RATING).getValue().toString());
}
DatabaseReference ref = ratingReference.child(getUid()).push();
Map<String, Object> ratingMap = new HashMap<>();
ratingMap.put("rating", rating + addPoint);
ref.updateChildren(ratingMap);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
}
private DatabaseReference ratingReference=FirebaseDatabase.getInstance().getReference().child(Consts.RATING_DB);
公共无效设置值(字符串uid,int addPoint){
ratingReference.child(uid).addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
内部评级=0;
if(dataSnapshot.child(Consts.RATING).getValue()!=null){
rating=Integer.valueOf(dataSnapshot.child(Consts.rating).getValue().toString());
}
databasereferef=ratingReference.child(getUid()).push();
Map ratingMap=新HashMap();
评级图。放置(“评级”,评级+添加点);
参考更新儿童(评级图);
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){}
});
}
如果您能帮助我,我将非常感激。假设
常量评级
包含一个与评级
类似的字符串值,并且此属性的类型为数字和非字符串,将添加点
的值添加到现有的评级
值中,请使用以下代码行:
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
long rating = 0;
if(dataSnapshot.child(Consts.RATING).exists()) {
rating = dataSnapshot.child(Consts.RATING).getValue(Long.class);
long newValue = rating + addPoint;
dataSnapshot.child(Consts.RATING).getRef().setValue(newValue);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage());
}
};
ratingReference.child(uid).addListenerForSingleValueEvent(valueEventListener);
正如您所见,没有必要使用任何
push()
调用。@AndréKool不,它不会。请看一下我的代码。我已经使用了addListenerForSingleValueEvent
。对不起,我的错误您好!是的,它正在工作!谢谢你的帮助!很抱歉我久违了。