从昨天开始,我一直在尝试为我的Firebase数据库添加一个值,我已经尝试了几种方法,但我做不到。
当用户查看一张奖赏卡时,调用addCard,该卡应添加到当前用户1卡中,并且每次向其添加一张卡时,不会删除该值。
这是我的RewardedAd(正确的广告节目)代码:
@Override
public void onUserEarnedReward(@NonNull RewardItem reward) {
// User earned reward.
addCard();
这是addCard:
private void addCard() {
FirebaseUser user = mAuth.getCurrentUser();
mDatabase.child("users").child(user.getUid()).runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
Integer carte = mutableData.getValue(Integer.class);
mutableData.setValue(carte + 1);
return Transaction.success(mutableData);
}
@Override
public void onComplete(DatabaseError databaseError, boolean b, DataSnapshot dataSnapshot) {}
});
}
我猜你是想通过事务创建它不存在的字段
也许你的结构应该是这样的:
users
|
|-----------UID
|
---card : 1 //and you want to keep updating this
试试这个:
private void addCard() {
FirebaseUser user = mAuth.getCurrentUser();
mDatabase.child("users").child(user.getUid()).child("card").runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
Integer card = mutableData.getValue(Integer.class);
if(card == null){
//if no card exist yet start with 1
mutableData.setValue(1);
return Transaction.success(mutableData);
}else{
//there is card just increment it +1
mutableData.setValue(card + 1);
}
return Transaction.success(mutableData);
}
@Override
public void onComplete(DatabaseError databaseError, boolean b, DataSnapshot dataSnapshot) {}
});
}
更改mDatabase。子系统(“用户”)。使用
它将被创建mDatabase的代码中的子项(user.getUid())
。子系统(“用户”)。子(user.getUid())。子(“点菜”)
主要内容:设置,更新在本章中,我们将向演示如何将数据保存到Firebase。 设置 方法将写入或替换指定路径上的数据。 让我们创建一个引用收集和设置两个运动员数据信息。 执行上面示例代码,得到以下结果 - 更新 我们可以用类似的方式更新Firebase数据。 注意我们如何使用路径。 执行上面示例代码,得到以下结果 -
我设法将数据插入身份验证,但无法插入数据库: 代码: 错误: E/AndroidRuntime:致命异常:主进程:com。实例budgetingapp,PID:11507 java。lang.RuntimeException:在类androidx上找到了名称getText的冲突获取程序。appcompat。小装置。AppCompativeText位于com。谷歌。火基。消防商店。util。Cust
我正在使用下面的代码将postingdata添加到firebase中。问题是,当我在onComplete中注释finish方法时,我的所有数据都正确写入firebase数据库。但是,当我取消对finish方法的注释时,大多数数据都不是用datbase编写的。我想用finish方法写入完整数据。
我有一个关于firebase实时数据库规则的问题。 有人创建了一个帐户,该帐户在实时数据库中创建了一个路径: 结构很简单(密钥、用户ID和其他数据)。 这是我的规则: 但现在问题来了。如何允许用户写入此对象?每个拥有代码的人(请参阅BQUyhq)w3D)都可以写入对象id。如果没有代码,他们就无法写入对象id。 有可能发生这样的事吗?如果是的话,我该怎么做呢。
当需要从数据库中返回一些数据,然后使用它进行一些计算并将其存储回来时,则需要使用事务性数据。 下面来看看运动员列表中的运动员。 我们要检索属性,添加年龄增加岁并将其返还给Firebase。 从集合中检索年龄,然后可以使用事务方法。 我们将获得当前的年龄,增加一年,并更新集合。 如果运行这个代码,可以看到年龄值更新为。如下图所示 -
主要内容:push()方法,Key属性在上一章中,我们已经演示了如何在Firebase中写入数据。 有时需要有一个唯一的数据标识符。 如果要为数据创建唯一标识符,则需要使用方法而不是方法。 在使用写入功能之前,避免遇到权限问题,建议设置规则为如下 - push()方法 方法将在数据被推送时创建一个唯一的ID。 如果想用前面的章节创建一个具有唯一ID的运动员数据,可以使用下面给出的代码片段。 现在数据看起来有些变化了。该名称将只是一个名