我实际上有两个问题彼此相似。我的问题的简要概述如下:
我正在开发的图书馆应用程序与书籍和作者有一对多的关系,这意味着一本书可以有许多作者。一个样本作者和一本书作为图像附上。
Q1.如何搜索特定作者?对于一本只有1个作者的书,它总是有第0个索引。一本有多个作者的书怎么样?如果是这样,相同的作者也可以存在于其他索引中。我想从一个特定的作者那里得到所有的书,我想知道什么是最好的方法?
您可以迁移到Cloud Firestore,但如果您已经在使用Firebase实时数据库,则可以实现这一点,但必须对数据库进行一些更改。
我想从一个特定的作者那里得到所有的书,我想知道什么是最好的方法?
不幸的是,您无法使用实际的数据库结构来实现您的目标。要从一个特定的作者那里获得所有的书籍,您应该考虑扩展您的数据结构以允许反向查找。这意味着您要创建一个名为books
的新顶级集合,在该集合中,您应该将特定作者的所有书籍存储为book
对象。数据库架构应如下所示:
Firebase-root
|
--- books
|
--- authorIdOne
|
--- bookIdOne
| |
| --- id: "bookIdOne"
| |
| --- nameInEnglish: "nameInEnglish"
| |
| --- nameInSinhalese: "nameInSinhalese"
|
--- bookIdTwo
|
--- id: "bookIdTwo"
|
--- nameInEnglish: "nameInEnglish"
|
--- nameInSinhalese: "nameInSinhalese"
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference yourRef = authorIdOneRef.child("books").child(authorIdOne);
authorIdOneRef.addListenerForSingleValueEvent(/* ... */);
如何查询作者名下是否有书?
要解决此问题,需要在DataSnapShot
对象上使用exists()
方法。假设您使用的是一个名为book
的模型类,请参阅以下几行代码:
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
Book book = ds.getValue(Book.class);
Log.d("TAG", book.getNameInEnglish());
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {}
};
authorIdOneRef.addListenerForSingleValueEvent(valueEventListener);
但使用String类也可以实现同样的功能。
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String nameInEnglish = ds.child("nameInEnglish").getValue(String.class);
Log.d("TAG", nameInEnglish);
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {}
};
authorIdOneRef.addListenerForSingleValueEvent(valueEventListener);
我有2个与firestore的firebase项目,让我们称他们为A和B,他们都有自己的web客户端。现在A web客户机需要读取B firestore数据库,所以我需要允许A客户机在B的某些集合下对firestore执行某些操作。是否有一种方法可以在使用firestore规则的同时使用B中A的身份验证数据来允许此类操作?。是否有一种方法可以将auth令牌从a链接到B中允许它们?。 任何机制都行得
问题内容: 我试图在把手模板内的数组中指定项的索引: 使用这个: 如果上述方法不可行,我将如何编写一个可以访问数组中特殊项目的助手? 问题答案: 尝试这个:
我有以下Firebase实时数据库连接到我的Flatter项目: 我对flutter和fire base相当陌生,我知道在我的flutter项目中访问此数据库中数据的一种方法是使用数据库引用变量。所以我有以下参考变量: 现在,如何使用此itemRef访问数据库中的温度和脉冲值?
我目前有一个类似以下的数据库结构。如果无法在Firebase实时数据库安全规则中循环,我如何基于用户对多个组的访问来保护数据?要遵循的例子... 数据库结构: 我如何在上指定安全规则,以基于中指定的任何组与当前用户的
我有一个由N条路径组成的数组,用于从firebase数据库中的不同位置检索数据。
问题内容: Integer scores[] = new Integer[10]; int count = 0; 我有一些要输入的数据。我将其放在 onChildAdded中 ,但是如果我需要从数组 中获取onChildAdded之外的数据 ,控制台将显示 “ null” 。 如果我尝试将数组的数据放入 onChildAdded中 ,它将成功 重要时刻 例如,如果我将使用 FOR 我 不会为空 问