从firebase获取用户数据?
Posted
技术标签:
【中文标题】从firebase获取用户数据?【英文标题】:Fetching user's data from firebase? 【发布时间】:2017-01-24 16:08:05 【问题描述】:目前我正在以这种方式显示用户的联系人
ref.observe(.value, with: snapshot in
var newItems: [Contacts] = []
for item in snapshot.children
let contact = Contacts(snapshot: item as! FIRDataSnapshot)
newItems.append(contact)
// filter the data here
let userID = FIRAuth.auth()?.currentUser?.email
let itemsMatching = self.items.filter
$0.addedByUser == userID
self.items = newItems
let sortedNames = itemsMatching.sorted $0.lastName < $1.lastName
self.tableView.reloadData()
)
如何仅显示与 addedByUser 列中具有相同电子邮件的用户? 当您创建新联系人时,它会自动将您的电子邮件值分配给 addedByUser。 因此,例如,如果我从帐户 show@mycontact.com 添加联系人,它将仅显示具有附加值的联系人:“show@mycontact”
【问题讨论】:
【参考方案1】:更新的答案 - 有两个选项:-)
let ref = FIRDatabase.database().reference(withPath: "contacts")
var newItems : [ContactItem] = []
ref.observe(.value, with: snapshot in
for item in snapshot.children
let item = ContactItem(snapshot: item as! FIRDataSnapshot)
newItems.append(item)
let userID = FIRAuth.auth()?currentUser?.email
let itemsMatching = newItems.filter
$0.addedByUser == userID
let sortedNames = itemsMatching.sorted $0.lastName < $1.lastName
print(sortedNames)
)
另一方面,鉴于您无论如何都在迭代快照,您总是可以选择简单的方法
let ref = FIRDatabase.database().reference(withPath: "contacts")
var newItems : [ContactItem] = []
let userID = FIRAuth.auth()?currentUser?.email
ref.observe(.value, with: snapshot in
for item in snapshot.children
let item = ContactItem(snapshot: item as! FIRDataSnapshot)
if item.addedByUser == userID
newItems.append(item)
let sortedNames = newItems.sorted $0.lastName < $1.lastName
print(sortedNames)
)
【讨论】:
多么奇怪。当然对我有用。愚蠢的问题 - 但您能否确认您在 $0 上确实有一个字段addedByUser
,当然您已将 self.myEmailAddress 更改为您自己的变量?
我发布了编辑后的代码.. 并尝试打印用户 ID 并打印当前用户邮件@Russell以上是关于从firebase获取用户数据?的主要内容,如果未能解决你的问题,请参考以下文章