小编Ale*_*amo的帖子

Firestore:与搜索词匹配或相似的查询名称

我在 Firestore 数据库中有一个包含他们名字的用户列表。我想要实现的是让用户能够搜索和找到其他用户。我的问题是:

Query query = db.collection("users").whereEqualTo("name", searchTerm);
FirestoreRecyclerOptions<UserObject> response = new FirestoreRecyclerOptions.Builder<UserObject>()
                .setQuery(query, UserObject.class)
                .build();
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,只有当我完全正确地写出他们的名字和姓氏时,我才能找到用户。但我想要的是获得名称或姓氏相似的用户。而且,用户的姓氏和名字存储在一个字符串变量中。就像在 facebook 中一样,如果你搜索一些名字,它也会显示相似的名字。有没有用 firestore 实现这一目标的好方法?

java android firebase google-cloud-firestore

3
推荐指数
1
解决办法
6289
查看次数

java.lang.RuntimeException: 无法反序列化对象。无法将 java.lang.Long 类型的值转换为布尔值

我有大问题。使用 Android Emulator 运行该应用程序效果很好,但是当我将该应用程序放在真实手机上时,出现此错误:

java.lang.RuntimeException: Could not deserialize object. Failed to convert value of type java.lang.Long to boolean (found in field 'imp')
Run Code Online (Sandbox Code Playgroud)

我的 Firebase 数据没问题,'imp' 字段是数据库中的一个布尔值,所以我从数据库中检索一个布尔值并将其存储在一个布尔变量中。当数据作为布尔值从 Firebase 发送时,我怎么能说我收到了 Long?

为什么只有真手机才会出现这种情况

现在我真的不明白为什么在 Android Emulator 中工作正常并且在真实手机中安装应用程序会给我这个错误。

这是我处理数据的适配器:

public class modelNoutati  {

String name;
String cont;
Date data;
Boolean imp;

public modelNoutati(){ }

public modelNoutati(String cont, Date data, Boolean imp, String name) {
    this.name = name;
    this.cont = cont;
    this.data = data;
    this.imp = imp;
}


public String getName() {return name;}

public …
Run Code Online (Sandbox Code Playgroud)

java android firebase firebase-realtime-database

3
推荐指数
1
解决办法
8623
查看次数

Firestore - 究竟要放哪个@Exclude注释?

我很困惑在哪里放置@Exclude我不想在我的Cloud Firestore数据库中的字段的注释.

仅仅将它放在getter方法上就足够了吗?它还有什么作用将它添加到setter方法或变量声明?

在我的示例中,我不想存储文档ID,因为这将是多余的:

public void loadNotes(View v) {
    notebookRef.get()
            .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                @Override
                public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                    String data = "";

                    for (QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots) {
                        Note note = documentSnapshot.toObject(Note.class);
                        note.setDocumentId(documentSnapshot.getId());
                        String title = note.getTitle();
                        String description = note.getDescription();

                        data += "\nTitle: " + title + "Description: " + description;
                    }

                    textViewData.setText(data);
                }
            });
}
Run Code Online (Sandbox Code Playgroud)

型号类:

public class Note {
private String documentId;
private String title;
private String description;

public Note() {
    //public no arg …
Run Code Online (Sandbox Code Playgroud)

java android firebase google-cloud-firestore

3
推荐指数
1
解决办法
858
查看次数

将所有字段名称从 firestore 文档获取到数组列表

我正在尝试ArrayList从文档中获取包含所有字段名称的文件并将其转换为ArrayList.

我已经能够从一个集合中做到这一点,我将所有文档都放在一个集合中,ArrayList但我不能从一个文档中做到这一点。

下面是所有文档的代码和数据库的图像以及我想要的。

names_clinics= new ArrayList<>();

    mFirebaseFirestore = FirebaseFirestore.getInstance();
    mFirebaseFirestore.collection("CodeClinic")
            .get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        for (DocumentSnapshot document : task.getResult()) {
                            names_clinics.add(document.getId());
                            Log.d("CLINIC CODE", document.getId() + " => " + document.getData());
                        }
                    } else {
                        Log.d("CLINIC CODE", "Error getting documents: ", task.getException());
                    }
                }
            });
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

谢谢:D

java android arraylist firebase google-cloud-firestore

3
推荐指数
1
解决办法
3016
查看次数

检查Firestore集合中是否存在文档

我有一棵Firestore收集树,我打算在其中仅存储一个文档。我想检查该集合是否包含该文档,如果包含,请检索该文档的ID!有什么想法/想法吗?

谢谢 :)

java android firebase google-cloud-firestore

3
推荐指数
2
解决办法
6549
查看次数

获取 Firebase Firestore 集合中最后创建的文档

有没有办法在 Firebase Firestore 集合中获取上次创建的文档?我的要求是当用户签名时,我必须在名为“history”的集合中添加一个文档;当用户退出时,我想使用名为“退出”的字段更新该文档;因此,如果我获得最后添加的文档,则很容易更新。有没有办法做到这一点?

firebase angular google-cloud-firestore

3
推荐指数
1
解决办法
1万
查看次数

在不知道 Firebase 实时数据库中的键值的情况下检索子值

我想获取父键值,其中“drinkManufacturerID”等于 currentUsers UID。但是,我不知道 theVenueID或 the的值PushID(见下文)。在不知道这些值的情况下,如何检查“drinkManufacturerID”的值是否相等。是否可以不重组我的数据库?

相关代码:

public class DealRawDataActivity extends AppCompatActivity {


DatabaseReference databaseDrinks;
DatabaseReference databaseManufacturer;


String keys;

FirebaseUser currentFirebaseUser = FirebaseAuth.getInstance().getCurrentUser();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_deal_raw_data);


    databaseDrinks = FirebaseDatabase.getInstance().getReference("drinks").child("-LWLuM2nesg0uaP0dLSn"); //However, this string will not be know! How to get this string value?

    //To later be used in listView
    databaseDrinks.orderByChild("drinkManufacturerID").equalTo(currentFirebaseUser.getUid()).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot datas : dataSnapshot.getChildren()) {
                keys = datas.getKey();
            }
            Toast.makeText(getApplicationContext(), keys, Toast.LENGTH_LONG).show(); …
Run Code Online (Sandbox Code Playgroud)

java android firebase firebase-realtime-database

3
推荐指数
1
解决办法
3778
查看次数

如何在没有数据的情况下创建新的Firestore文档?

我正在尝试创建一个新文档,其中没有任何数据(任何字段)。但我找不到办法。

ios firebase swift google-cloud-firestore

3
推荐指数
1
解决办法
2005
查看次数

如果我在 firebase 身份验证中有很多多余的匿名用户,可以吗?

我想让新用户在决定使用 Gmail、Facebook 或电子邮件和密码登录之前可以看到我的应用程序中的一些内容。所以首先我需要让他们在使用此代码安装应用程序时匿名登录

auth.signInAnonymously()
Run Code Online (Sandbox Code Playgroud)

然后,在他们尝试之后,他们决定使用 Google 帐户登录,然后我将具有特定 UID(假设 UID 是 q1q2q3)的用户转换为使用此代码使用 Google 作为身份验证提供程序。

auth.currentUser!!.linkWithCredential(credential)
Run Code Online (Sandbox Code Playgroud)

然后假设他们卸载并重新安装该应用程序。因此他们将再次匿名登录,并且作为匿名用户将获得不同的 UID(假设新的 UID 是 aXXXX12345b ),即使他们再次使用 Google 登录,他们也会以 q1q2q3 身份登录

所以现在我有一个多余的匿名用户(aXXXX12345b)。像这样有多余的匿名身份验证用户可以吗?我的意思是,我担心我会遇到 firebase 身份验证的限制。我应该怎么办 ?对于这样的情况有更好的方法吗?我不知道这是否是一种常见做法

android anonymous kotlin firebase firebase-authentication

3
推荐指数
1
解决办法
1041
查看次数

Firebase google 一键登录找不到匹配的凭据

我想使用 Google 帐户登录我的应用程序。我使用 Firebase 对用户进行身份验证。

我已经阅读了该文档一百万遍。我已将 SH1 调试密钥作为指纹添加到 Firebase 项目中,并使用Web SDK configurationFirebase 作为 Web 客户端 ID: 这东西

我已经在 strings.xml 文件中设置了它

<string name="web_client_id">**HERE**</string>

我的其余代码如下所示:

public class AuthFragment extends Fragment {
    private FragmentAuthBinding binding;
    private SignInClient oneTapClient;
    ActivityResultLauncher<Intent> oneTapLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
        result -> {
            if (result.getResultCode() == Activity.RESULT_OK) {
                Intent data = result.getData();
                try {
                    var credential = oneTapClient.getSignInCredentialFromIntent(data);
                    String idToken = credential.getGoogleIdToken();
                } catch (ApiException e) {
                    throw new RuntimeException(e);
                }
            }
        });
    public AuthFragment() {}

    @Override
    public View …
Run Code Online (Sandbox Code Playgroud)

java android firebase google-cloud-platform firebase-authentication

3
推荐指数
1
解决办法
831
查看次数