有没有一种快速的方法来使用Firebase执行数据库样式的查询?
例如:
给定一个火力点参考users与领域user_id,name以及age什么是做类似这样的查询的最佳方式:
SELECT name FROM users WHERE `user_id`=147;
Run Code Online (Sandbox Code Playgroud)
和
SELECT COUNT(*) FROM users WHERE age=21;
Run Code Online (Sandbox Code Playgroud) 我试图得到所有条目createdAt等于Today,但它什么也没有返回.
我在这做错了什么?而且,按照我尝试的方式查询数据的正确方法是什么?
JSON:
{
"thoughts" : {
"-KWGdcdZD8QJSLx6rSy8" : {
"createdAt" : "Tomorrow",
"thought" : "meno",
"user" : "ET9tYfHqThNTsLG4bZGIbuLGauu2"
},
"-KWGeGivZl0dH7Ca4kN3" : {
"createdAt" : "Today",
"thought" : "meno",
"user" : "ET9tYfHqThNTsLG4bZGIbuLGauu2"
},
"-KWGeIvWHBga0VQazmEH" : {
"createdAt" : "Yesterday",
"thought" : "meno",
"user" : "ET9tYfHqThNTsLG4bZGIbuLGauu2"
}
}
}
Run Code Online (Sandbox Code Playgroud)
迅速:
let db = FIRDatabase.database().reference().child("thoughts")
let ref = db.queryEqual(toValue: "Today", childKey: "createdAt")
ref.observe(.value, with:{ (snapshot: FIRDataSnapshot) in
for snap in snapshot.children {
print((snap as! FIRDataSnapshot).key)
}
})
Run Code Online (Sandbox Code Playgroud) 我正在实施社交象棋游戏.每个用户都可以创建一个新游戏,他们会等到系统找到他们的对手.
当用户创建游戏时,他们会指定约束:他们想要玩的颜色,以及对手的最低国际象棋等级.
对手可以匹配也可以不匹配.例如,以下两个对手将匹配:
// User 1 with rating 1700 // User 2 with rating 1800
// creates this game // creates this game
game: { game: {
color: 'white', minRating: 1650
minRating: 1600 }
} // User did not specify a preferred color,
// meaning they do not care which color to play
Run Code Online (Sandbox Code Playgroud)
因此,如果用户1是系统中的第一个用户,并创建了他们的游戏,他们将等待.用户2创建游戏后,应立即与用户1匹配.
另一方面,以下两个对手将无法比赛,因为他们都想打白棋.在这种情况下,两者都应该等到其他人用color: 'black'(或未指定颜色)创建游戏,并且minRating符合要求.
// User 1 with rating 1700 // User 2 with rating 1800
// creates this game // creates this …Run Code Online (Sandbox Code Playgroud) 我正在使用 Firebase、Firebase 的身份验证服务(简单的电子邮件/密码登录)构建一个应用程序,并以与此处描述的方式非常相似的方式存储用户信息。
我的部分功能需要允许根据电子邮件地址查找其他用户。
有没有一种简单的方法可以使用电子邮件来查找 Firebase 定义的 uid(即“simpleLogin:9”),而无需迭代所有用户,或者能够实际登录他们?
我正在使用Firebase应用程序,该应用程序将包含一组代码,这些代码仅供一次性使用,然后将永久绑定到用户.
我希望获得这些代码的最佳查询和更新功能,并遵循Firebase本身的一些建议以及之前的问题,我提出了以下结构:
Codes
- Available
- 12345
- property 1
- property 2
- 32124
- property 1
- property 2
- Taken
- 23456
- property 1
- property 2
Users
- UID
- Codes
- 23456
Run Code Online (Sandbox Code Playgroud)
这使得查询可用代码变得容易,以及将绑定到用户的代码与其中一个代码匹配(用于登录后进行验证).
我遇到的问题是,为了将代码对象从"可用"移动到"已获取",我必须将其从前者中删除并将其插入到后者中.这是正确的方法吗?我对物理删除数据以移动它感到紧张.
关于如何正确构建此用例的任何建议?