java - 如何在 Firebase 中进行类似于 SQL 查询的查询?
问题描述
我正在尝试使用 Java 开发适用于 Android 的应用程序。我正在使用 NoSQL Firebase 数据库。但是,这与我迄今为止所学到的非常不同,所以我希望你能帮助我做这样的事情:
SELECT "name" FROM users WHERE email = "user@gmail.com"
使用 Firebase 语法。你可以帮帮我吗?
解决方案
在 NoSQL 数据库的世界中,查询如下所示:
SELECT "name" FROM users WHERE email = "user@gmail.com"
可以写成两种方式。如果您使用的是Firebase 实时数据库 ,则查询应如下所示:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef.child("users");
Query query = usersRef.orderByChild("email").equalTo("user@gmail.com");
如果您使用的是Cloud Firestore,则查询应如下所示:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference usersRef = rootRef.collection("users");
Query query = usersRef.whereEqualTo("email", "user@gmail.com");
编辑:
根据您的评论,要获取名称,请使用上述行以及以下代码行:
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String name = ds.child("name").getValue(String.class);
Log.d(TAG, name);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
}
};
query.addListenerForSingleValueEvent(valueEventListener);
推荐阅读
- javascript - 当我更改对象中的某些内容时,我在插值中的值不会更新
- laravel - 当 contenteditable 更改时触发事件?(vuejs)
- .htaccess - 使用结束参数 htacces 设置 410 url
- parameters - ARIMA ACF 和 PACF
- java - 多个正则表达式模式来替换多次出现的图像标签
- c# - 如何在 EF Core Select 语句中将格式化日期字符串转换为大写
- python - 日期作为参数传递给 SQL Server 存储过程 - 从 pyodbc 脚本调用
- shell - 如何使用 sed 提取模式之间的线
- reactjs - Redux 提供程序未在加载时为 React 组件提供道具
- python - jinja,烧瓶中的for循环