我正在读取火基数据库的数据。以下是存储在数据库中的数据的快照。
在以“8SS...”开头的快照字符串中,是用户的 uid。以下是用于从 firebase 数据库中检索数据的代码。
//To check if uid of current user and database user matches.
Query q = FirebaseDatabase.getInstance().getReference().child("Location").child(user.getUid()).equalTo(FirebaseAuth.getInstance().getCurrentUser().getUid());
q.addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot singleSnapshot : dataSnapshot.getChildren()){
Log.d(TAG, "Yay!!");
User us = singleSnapshot.getValue(User.class);
String string = "Name: "+ us.getName()+"\nAddress: "+ us.getlat()+ us.getlon()+ "\n\n";
n.setText(string);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
// read query is cancelled.
Log.d(TAG, "loadPost:onCancelled", databaseError.toException());
}
});
用户类包含getter和setters。
错误是只有空文本视图出现
结论从数据库读取失败
。
查询是真还是假?
我尝试使用这个:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Location").child("8SS0uk4FmiPUtXP208Tx8Cqxt2z2");
然后调用<code>ref。addListenerForSingleValueEvent()但仍然没有显示任何内容。
我尝试使用这个:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Location").child(user.getUid());
这给出了< code >数据快照:“数据快照={key='-Kn ...”,value= "纬度:..,经度:...,姓名:……”}。但这不是我所期望的。< br >数据库结构应该是< code >位置-
这是我在数据库中插入数据的代码。
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser() ;
refDatabase = FirebaseDatabase.getInstance().getReference().child("Location").child(user.getUid());
DatabaseReference newPost = refDatabase.push();
//the push() command is already creating unique key
Map<String, String> mapname = new HashMap<String, String>();
mapname.put("Name", n.getText().toString());
mapname.put("latitude", Double.toString(lat));
mapname.put("longitude", Double.toString(longt));
mapname.put("user id", user.getUid());
newPost.setValue(mapname);
为什么要使用等于然后获取当前用户。. child(user.getUid())应该已经是您的当前用户,它为您提供了您尝试收听的子用户的值。
我认为乌伊德是“8SSOuk.......”的孩子。所以它应该是这样的:火基地数据库.getInstance().getReference().子(“位置”).子(“8SSOuk...”).子(“8SSOuk...”).子(用户.
我通过引入多个 for 循环解决了这个问题。
因此,我的第一个孩子的快照是数据快照:“数据快照={键='-Kn...',值=”纬度:..,经度:...,名称:...“}
。
下面是提取所有值和键的代码:
mRef.addValueEventListener(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.d(TAG, "Children" + dataSnapshot.getKey());
for(DataSnapshot singleSnapshot : dataSnapshot.getChildren()){
String st = singleSnapshot.getKey();
Log.d(TAG, "Yay!!" + singleSnapshot.child(st));
st = "";
int count=0;
for(DataSnapshot singleSnap : singleSnapshot.getChildren()) {
Log.d(TAG, "String" + singleSnap.getValue());
//n.setText(us.getName());
if(count==0) {
st = "Name: " + singleSnap.getValue() + '\n';
}
else if(count==1) {
st = st + "Latitude: " + singleSnap.getValue() + '\n';
}
else if(count==2) {
st = st + "Longitude: " + singleSnap.getValue() + '\n';
}
count++;
}
final TextView rowTextView = new TextView(Menu5.this.getActivity());
rowTextView.setText((CharSequence) st);
ll.addView(rowTextView);
}
}
这为push.So创建的每个唯一id提供了单个键和值对,我不得不对连接和显示进行硬编码,因为整个应用程序的结构将保持不变。
我在数据库中有数据:Firebase中的数据库 我想读取所有子项(Belgia、Czechy、Polska…),并将其显示在文本字段中,但单击按钮后(我不会更改数据库中的数据)。按钮分配了以下功能: 在我写代码之前: 不幸的是,当我按下按钮时,什么也没有发生。 我很感激你的帮助问候,马辛
我试图从Firebase数据库中读取数据,我已经到处阅读和查找,但我已经走到了死胡同。 这就是我所做的一切。 依赖项: 实现'com.google.firebase: Firebase存储: 9.2.1' 实现'com。谷歌。firebase:firebase数据库:9.2。1' 实现'com。谷歌。firebase:firebase授权:9.2。1' 实现'com。谷歌。火基:火基核心:9.2。
我已经花了几个小时阅读产品分支中的0和1。请在Firebase数据库有经验的人帮助我:(
因此,我尝试拍摄数据库的快照,并添加带有子项的数组字符串中的项。 我的set和get java文件如下所示 但是,当我的程序到达dataQuery方法并尝试获取和设置名称和成分时,它会崩溃。有人能解释一下我做错了什么,以及是否有更好的方法来使用数据库快照来做到这一点吗? 进程:in.tvac.akshayejh.firebasesearch,PID:24798java.lang.NullPoint
我的springboot应用程序尝试从两个数据源(emwbis和backupemwbis)读取数据。我按照下面的链接配置了我的springboot应用程序以从两个不同的数据源读取数据。 http://www.baeldung.com/spring-data-jpa-multiple-databases 我的应用程序当前的问题是,它总是从主数据源(emwbis)读取数据。我已经编写了以下代码。 主数
我的nextjs webapp中有一个实时数据库,我用它来发送通知。 我的数据库的架构如下: 我仅以管理员身份从服务器端写入数据,但按以下方式从客户端读取数据: 在这一刻,我有以下规则: 正如您所看到的,每个经过身份验证的人都可以阅读所有内容。我希望用户只阅读他自己的通知。ObjectID是我的mongoDB中的引用。 例如,如果我的我只想访问路径的数据,如果我试图从,那么我什么也得不到(或错误)