我是 Firestore 和学习 Android 的新手。我面临的问题是关于构建代码。以下是我的用例:
- 用户想要添加一个新的笔记,输入笔记的标题
- 我想检查是否存在任何其他具有相同标题的笔记
- 如果是,则不允许,否则创建
早些时候,使用 SQLite 很容易。我可以运行一个查询来获取列表中的数据,检查列表并采取相应的行动。
// BEFORE
private boolean fnValidate() {
// some code...
// run Sqlite query and get data in a list or something
// check if exists, return accordingly
}
// NOW
private boolean fnValidate() {
// some code...
notesRef.get().addOnSuccessListener(queryDocumentSnapshots -> {
for (QueryDocumentSnapshot s : queryDocumentSnapshots) {
// add data to list or something
}
// 'exists logic' will go here??
}).addOnFailureListener(e -> {
// show error
});
// I want 'exists logic' here like it was earlier so that I can properly return true/false
}
现在如您所见,这不会以顺序方式工作。它将启动获取笔记的任务并继续进行。因此,我需要添加我exists logic
的 in OnSuccessListener
。
此外,将来,如果我必须在 my 之前检查其他值exists logic
,我将不得不再次exists logic
进入该条件OnSuccessListener
,依此类推。
另外,从哪里将值 true/false 返回给原始调用者fnValidate
?
也许我在这里遗漏了一些明显的东西,但我对理想的结构应该如何感到非常困惑。请告诉我这里的最佳做法是什么。