let userID = Auth.auth().currentUser!.uid
ref = Database.database().reference().child(userID);
首先,这里是我的消防规则:
{
"rules": {
"jobs": {
"$uid": {
".read": "auth.uid === $uid"
}
}
}
}
以下是我的firebase数据库:
FirebaseDatabase
import UIKit
import Firebase
import FirebaseAuth
class LoginViewController: UIViewController {
var ref: DatabaseReference!
static var isAlreadyLaunchedOnce = false
@IBOutlet weak var txtemail: UITextField!
@IBOutlet weak var txtpass: UITextField!
var isSignin:Bool = true
override func viewDidLoad() {
super.viewDidLoad()
if FirebaseApp.app() == nil {
FirebaseApp.configure()
}
}
@IBAction func submit(_ sender: UIButton) {
if let email = txtemail.text, let passowrd = txtpass.text
{ Auth.auth().signIn(withEmail: email, password: passowrd) { (user, error) in
if user != nil {
self.performSegue(withIdentifier: "goto", sender : self)
}
else {
let alert = UIAlertController(title: "Username or Password Incorrect", message: nil, preferredStyle: .alert)
let okButton = UIAlertAction(title: "Ok", style: .default, handler: nil)
alert.addAction(okButton)
self.present(alert, animated: true, completion: nil)
}
}
}
}
}
import UIKit
import Firebase
class LoggedInViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var loginlbl: UILabel!
@IBOutlet weak var tbl: UITableView!
var ref: DatabaseReference!
var jobList = [JobModel]()
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let job = jobList[indexPath.row]
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! ViewControllerTableViewCell
let job: JobModel
job = jobList[indexPath.row]
cell.lblCol.text = job.collection
cell.lblDel.text = job.delivery
cell.lblShip.text = job.shipper
cell.lblCon.text = job.consignee
cell.lblEmai.text = job.email
cell.lblRef.text = job.reference
cell.lblFreight.text = job.freight
cell.collected.text = job.collected
cell.delivered.text = job.delievered
return cell }
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return jobList.count
}
override func viewDidLoad() {
super.viewDidLoad()
if FirebaseApp.app() == nil {
FirebaseApp.configure() }
ref = Database.database().reference().child("jobs");
ref.observe(DataEventType.value) { (snapshot) in
if snapshot.childrenCount>0 {
self.jobList.removeAll()
for jobs in snapshot.children.allObjects as! [DataSnapshot]{
let jobObject = jobs.value as? [String: AnyObject]
let jobId = jobObject?["id"]
let jobShipper = jobObject?["shipper"]
let jobConsignee = jobObject?["consignee"]
let jobEmail = jobObject?["email"]
let jobReference = jobObject?["reference"]
let jobFreight = jobObject?["freight"]
let jobCollection = jobObject?["collection date"]
let jobDelivery = jobObject?["delivery date"]
let jobPod = jobObject?["pod"]
let jobCollected = jobObject?["collected"]
let jobDelivered = jobObject?["delivered"]
let job = JobModel(id: jobId as! String?,
shipper: jobShipper as! String?,
consignee: jobConsignee as! String?,
email: jobEmail as! String?,
reference: jobReference as! String?,
freight: jobFreight as! String?,
collection: jobCollection as! String?,
delivery: jobDelivery as! String?,
pod: jobPod as! String?,
collected: jobCollected as! String?,
delivered: jobDelivered as! String?)
self.jobList.append(job)
}
self.tbl.reloadData()
} } }
override func viewDidAppear(_ animated: Bool) {
Auth.auth().currentUser != nil; do {
self.loginlbl.text = "Hello " + (Auth.auth().currentUser?.email)!
}}
}
您的规则允许您访问作业的子节点。喜欢jobs/user_id_1
因此,您必须监听子节点,而不是整个作业
节点
database.database().reference().child(“jobs”);
Firebase实时数据库似乎会在添加或删除新项目等时通知我。这很好,但如何获取之前通知我的所有现有项目? 例如,假设我的应用程序列出了数据库中的项目。我第一次启动了我的应用程序。然后创建了“项目1”和“项目2”。Firebase通知我“项目1”和“项目2”,因此我将它们添加到我的应用程序列表中。 现在,我的应用程序已关闭并重新启动。如果创建了新项目“项目3”,我会收到通知,但如何再次检索“项目1
我遇到的问题是,使用下面显示的以下Firebase规则,经过身份验证的用户可以成功写入数据库,但无法从中读取,因为我在控制台中获得了“拒绝权限”。当我将读取和写入设置为true(公共)时,读取和写入功能都正常工作。我从数据库中读取的代码也显示如下: 规则: 示例数据库: 以下是确切的错误:
我已经花了几个小时阅读产品分支中的0和1。请在Firebase数据库有经验的人帮助我:(
我正在使用FireBase实时数据库来设置一个简单的CRUD应用程序。 我正在设置规则,以便只有登录的用户才能写入请求部分。我一定是误会了奥特。uid。 在请求中,我设置了,但我无法写入数据。 我错过了什么?
我的nextjs webapp中有一个实时数据库,我用它来发送通知。 我的数据库的架构如下: 我仅以管理员身份从服务器端写入数据,但按以下方式从客户端读取数据: 在这一刻,我有以下规则: 正如您所看到的,每个经过身份验证的人都可以阅读所有内容。我希望用户只阅读他自己的通知。ObjectID是我的mongoDB中的引用。 例如,如果我的我只想访问路径的数据,如果我试图从,那么我什么也得不到(或错误)
我正在一个聊天应用程序,其中消息存储在firebase实时数据库。现在,如果我创建一个如下所示的节点(Chats-Better-A-ID和-B-ID是自动生成的聊天室密钥),那么我想知道当用户S在聊天应用程序中打开与用户T聊天时,so数据库将只读取存储在Chats-Better-S-T-ID中的消息,而不会读取其他聊天室消息!?我说的对吗?如果是,那么它会降低定价吗? 或 如果我存储如下所示的数据