java - 我想检查我的用户输入是否包含一个子字符串,它是我的 firestore 数据库中的一个文档,这在 Java 中是否可行?(安卓工作室)
问题描述
在以下代码中,“问题”是由用户语音输入创建的字符串变量。这个问题与我的 firebase cloud firestore 中的文档 ID 进行了比较。
public void setAnswer(String question){
FirebaseFirestore JLdatabase = FirebaseFirestore.getInstance();
DocumentReference docRef = JLdatabase.collection("Products").document(question);
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
textViewAnswer.setText(document.getString("location"));
} else {
textViewAnswer.setText("I can't help you with this yet");
}
} else {
textViewAnswer.setText("Oeps. Something went wrong");
}
}
});
如果 question 正好等于文档 ID,它会起作用,但大多数时候会说一些稍微不同的东西。现在我想检查问题中是否有一个单词/单词组合等于我的文档 ID 之一。这在Java中可能吗?我在网上找不到这样的东西。
如果有更好的方法来解决这样的问题。我想来这里!
解决方案
我要做的是:
- 创建一个字段名称来存储您的文档 ID 之后的问题
- 将问题存储为数组。(意思是每个单词都是它自己的数组)
- 使用该函数执行firebase 查询
array-contains
- 还记得我告诉你如何将你的问题存储为一个数组(例如 [“How”、“are”、“you])吗?好吧,因为 firebase 没有关于 SQL 的 LIKE 操作
- 执行查询后,您可以获取文档 ID 并将其传递给文档参考
推荐阅读
- design-patterns - 我什么时候应该使用单例模式?
- illegalstateexception - 为 Oreo 限制启动服务作为前台或不启动服务
- java - SwingUtilities.InvokeAndWait() 不执行可运行代码
- ef-code-first - EF 核心并创建多对多表。创建额外的字段。为什么 ?
- c# - 无法使用 LINQ to SQL 插入数据库
- bash - .sh 文件中的 json 处理
- neural-network - 神经网络中的计算时间前向传播与反向传播?
- javascript - Python Flask:返回 HTML 内容
- vba - 使用 AppleScript 以编程方式创建纯文本格式的 AppleScript 文件
- javascript - jQuery Datatble:隐藏表格左下方的行选择信息