我需要使用一种叫做 queryEqualTo() 的 firebase 过滤器,但我需要能够过滤多种内容,例如 queryEqualTo("Science", "English")
我怎样才能做到这一点?
这是我的数据库:
我正在尝试从 firebase 数据库中检索我的数据。我的执行如下: select * from logindb where loginname='pandi' and loginpass='1234'。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my__value);
mlist = (ListView) findViewById(R.id.mylist);
Intent intent = getIntent();
databaseReference = FirebaseDatabase.getInstance().getReference("logindb");
String search = intent.getStringExtra("mval");
databaseReference = FirebaseDatabase.getInstance().getReference();
Query query = databaseReference.child("loginname").orderByChild("loginId").equalTo(search);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
// dataSnapshot is the "issue" node with all children with id 0
for (DataSnapshot issue : dataSnapshot.getChildren()) {
String address=issue.child("address").getValue().toString();
Toast.makeText(getApplicationContext(), address, Toast.LENGTH_SHORT).show();
}
}
}
@Override …Run Code Online (Sandbox Code Playgroud) 考虑以下firebase结构:
{
"users" : {
"00:03:aa:dc:1c:2b" : {
"firstName" : " Ofek",
"groupName" : "thailand",
"lastName" : "Ron",
"registration" : {
"type" : "regular",
"time" : 1418288589636
},
"phoneNumber" : "345345345"
},
"04:46:65:8D:60:C6" : {
"firstName" : " Ofek",
"groupName" : "thailand",
"lastName" : "Ron",
"registration" : {
"type" : "regular",
"time" : 1418288589630
},
"phoneNumber" : "345345345"
},
}
}
Run Code Online (Sandbox Code Playgroud)
你如何实现以下查询:
SELECT * FROM USERS WHERE groupName="thailand" and registration.time>=1418288589631
Run Code Online (Sandbox Code Playgroud)
我试图像这样做:
fireBase.orderByChild("groupName").startAt("thailand").endAt("thailand").orderByChild("time").startAt("1418288589631")
Run Code Online (Sandbox Code Playgroud)
但由于firebase不允许多个订单,因此引发了异常......
有任何想法吗?
我正在尝试查询 firebase 上的数据以查找其值包含字符串一部分的子项。因此,假设值是“apple”,如果我搜索“app”,我会返回该记录。我意识到有人问过这个问题,但我读过的答案都表明 firebase 将集成此功能......几乎 3 年后,我似乎找不到任何东西。
我有以下 firebase 结构。由此我需要根据查询获取数据where Dstatus=ok and Drmoble=mobile no
到目前为止,我已经写了这个仅适用于单个值。我如何将两者结合起来
mReferenceBooks.orderByChild("Drmoble").equalTo(mobile_no).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Run Code Online (Sandbox Code Playgroud) 我刚刚进入了Firebase和android的世界。我遵循在线教程来设置和获取非嵌套数据,并将其显示在列表视图中,如下所示:
之前的数据:
mListView = (ListView) findViewById(R.id.ListView) ;
final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mStudents);
mListView.setAdapter(arrayAdapter);
FirebaseDatabase database = FirebaseDatabase.getInstance();
myRef = database.getReference().child("Student1");
myRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
String value = dataSnapshot.getValue(String.class);
String key = dataSnapshot.getKey();
String totl = key + ": " + value;
mStudents.add(totl);
arrayAdapter.notifyDataSetChanged();
}
});
Run Code Online (Sandbox Code Playgroud)
我向数据库添加了带有子字段的成绩字段。我想显示整个学生1数据以及成绩。当我尝试运行上面的代码时。我收到以下错误。
数据后:
FATAL EXCEPTION: main
Process: com.adcpnmd.mystudents, PID: 3524
com.google.firebase.database.DatabaseException: Failed to convert value of type java.util.HashMap to String
at com.google.android.gms.internal.zzbqi.zzaD(Unknown Source)
at com.google.android.gms.internal.zzbqi.zzb(Unknown Source) …Run Code Online (Sandbox Code Playgroud) 我的应用程序有一个最高得分表,该表使用.queryOrdered(byChild:“ userHighScore”)和.queryLimited(toLast:100)来获得最高100分:
func getTopScores() {
var scores = [String]()
self.reference
.child("users")
.queryOrdered(byChild: "userHighScore")
.queryLimited(toLast: 100)
.observeSingleEvent(of: .value, with: { (snapshot) in
for child in snapshot.children.reversed() {
if let dataSnapshot = child as? DataSnapshot, let user = dataSnapshot.value as? [String:AnyObject] {
if let userHighScore = user["userHighScore"] as? Int {
var stringToAppend = "\(scores.count+1). "
if let userName = user["userName"] as? String {
stringToAppend += " \(userName) • \(userHighScore)"
}
scores.append(stringToAppend)
}
}
}
})
}
Run Code Online (Sandbox Code Playgroud)
问题是当有平局得分时。
理想情况下,第一个获得该分数的用户应高于表中具有相同分数的其他用户(而获得该分数的最新用户将是拥有相同分数的用户中最低的)。
但是,该表以与Firebase实时数据库中出现的相同的随机顺序显示得分相同的得分。
有没有办法按时间顺序排序并列分数?
我已经为此花了好几个小时。在此先感谢您的帮助!