我正在开发一个Android应用程序,在这个应用程序中,用户应该能够搜索知道某种语言的其他用户,具体取决于他们的偏好。要做到这一点,我得到了所需的语言并在数据库中进行查询,但我无法弄清楚如何在这里带来值。
所以下面你看到我的数据库结构在图片中。用户选择了一种名为“意大利语”的语言,这应该返回所有知道意大利语的用户。
以下是代码:例如,如果他们的语言是意大利语,它应该返回像Ridvan和Fenerbahce这样的用户。
DatabaseReference myRootRef = FirebaseDatabase.getInstance().getReference("Users");
myRootRef.child("Users").orderByChild("Languages").equalTo(Language).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
答案 0 :(得分:0)
app.get('/msg/:id',(req, res) =>{
db.findById(req.params.id, function(err, dba) {
if (err)
res.send(err)
res.json(dba)
});
});
让你感到困惑,因为没有价值equalTo
。你想要
Italian
此处的空格只是一个ASCII值非常低的字符,因此我们可以得到所有结果。
请注意,此结构要求您为用户节点上的每种语言定义索引:
myRootRef.child("Users").orderByChild("Languages/Italian").startAt(" ")
这可能适用于语言。但是,如果值是用户生成的,则会导致索引的维护问题。在这种情况下,请考虑创建反向查找:具有顶级语言列表以及每个语言的关联用户。有关详情,请参阅我的答案:http://stackoverflow.com/questions/40656589/firebase-query-if-child-of-child-contains-a-value。