英文:
How to know the type of each property in a Firestore document?
问题
以下是您要翻译的内容:
我有这个数据库:
root
\_ users
\_ uid
\_ name:“Pathis”
\_ admin:true
\_ uid
\_ name:“Venkat”
\_ admin:false
获取数据的代码:
db.collection("users").whereEqualTo("admin", true).get().addOnCompleteListener(task -> {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
boolean admin = document.getBoolean("admin");
}
}
});
这可以工作,因为我知道类型(name 是 String,admin 是 boolean)。但如果我不知道它们,该怎么办?我需要一种获取文档并验证每个属性的方法。假设我找到了 name,我想要验证为 String 类型,我找到了 admin,应该是 boolean。是否有解决方案?
英文:
I have this db:
root
\_ users
\_ uid
\_ name: "Pathis"
\_ admin: true
\_ uid
\_ name: "Venkat"
\_ admin: false
Code to get the data:
db.collection("users").whereEqualTo("admin", true).get().addOnCompleteListener(task -> {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
boolean admin = document.getBoolean("admin");
}
}
});
It works because I know the types (name is a String, admin is a boolean). But how would this work if I did not know them? What I need is a way to get the document and verify each property. Let's say I find name and I would like to verify as String type, I find admin and I should get boolean. Is there a solution for this?
答案1
得分: 1
如果您事先不知道值的类型,您将不得不使用get()方法将值作为Object访问,然后使用Java的instanceof
运算符检查其类型。例如:
Object adminObject = document.get("admin");
if (adminObject instanceof String) {
String admin = (String) adminObject;
}
else if (adminObject instanceof Boolean) {
boolean admin = (Boolean) adminObject;
}
这并不是详尽的方法,只是一个简短的示例。您可能需要处理许多其他类型,并且您的代码可能需要适应。
英文:
If you don't know the type of value ahead of time, you will have to access the value as an Object using get(), then check its type using the Java instanceof
operator. For example:
Object adminObject = document.get("admin");
if (adminObject instanceof String) {
String admin = (String) adminObject;
}
else if (adminObject instanceof Boolean) {
boolean admin = (Boolean) adminObject;
}
This is not an exhaustive approach - just a short example. You might need to handle many other types, and your code might need to adapt.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论