Firebase - 将多个值原子写入多个位置

提供

我需要向 Firebase 注册一个对象。该对象有多个字段,我需要将它们全部写入多个路径。

我的代码:

public func RegisterProductOnDatabase(database dataBase: DatabaseReference)
{
    // Run in one transaction
    RegisterProductOnDatabase(database: dataBase)
    RegisterProductForAllUsers(database: dataBase)
}

private func RegisterProductForAllUsers(database dataBase: DatabaseReference)
{
    dataBase.child("Products").child(self.UniqueID()).child("Name").setValue(self.Name())
    dataBase.child("Products").child(self.UniqueID()).child("UniqueID").setValue(self.UniqueID())
    dataBase.child("Products").child(self.UniqueID()).child("Price").setValue(self.Price())
    dataBase.child("Products").child(self.UniqueID()).child("Description").setValue(self.Description())
    dataBase.child("Products").child(self.UniqueID()).child("ToBuy?").setValue(self.m_ToBuy)
    dataBase.child("Products").child(self.UniqueID()).child("ToSell?").setValue(self.m_ToSell)
    dataBase.child("Products").child(self.UniqueID()).child("Owner").setValue(self.m_Owner)
    dataBase.child("Products").child(self.UniqueID()).child("Amount").setValue(self.m_Amount)
    dataBase.child("Products").child(self.UniqueID()).child("MainImage").setValue(self.m_PicturesURLs.first)
}

private func RegisterProductForAddingUser(database dataBase: DatabaseReference)
{        
    dataBase.child("Users").child(m_Owner).child("Products").child(self.UniqueID()).child("Name").setValue(self.Name())
    dataBase.child("Users").child(m_Owner).child("Products").child(self.UniqueID()).child("UniqueID").setValue(self.UniqueID())
    dataBase.child("Users").child(m_Owner).child("Products").child(self.UniqueID()).child("Price").setValue(self.Price())
    dataBase.child("Users").child(m_Owner).child("Products").child(self.UniqueID()).child("Description").setValue(self.Description())
    dataBase.child("Users").child(m_Owner).child("Products").child(self.UniqueID()).child("ToBuy?").setValue(self.m_ToBuy)
    dataBase.child("Users").child(m_Owner).child("Products").child(self.UniqueID()).child("ToSell?").setValue(self.m_ToSell)
    dataBase.child("Users").child(m_Owner).child("Products").child(self.UniqueID()).child("Amount").setValue(self.m_Amount)
    dataBase.child("Users").child(m_Owner).child("Products").child(self.UniqueID()).child("MainImage").setValue(self.m_PicturesURLs.first)
}

我需要函数“RegisterProductOnDatabase”作为一个事务运行 - 这意味着所有写入的值都作为一个事务写入。

1) 如何使用 Swift 将所有这些数据写为一个事务?2)有没有更好的方法来编写所有这些值而无需代码乘法?

托马·拉杜-佩特雷斯库

首先,您应该使用字典而不是手动修改每个节点。

这是来自 Firebase 文档:

let key = ref.child("posts").childByAutoId().key
let post = ["uid": userID,
            "author": username,
            "title": title,
            "body": body]
let childUpdates = ["/posts/\(key)": post,
                    "/user-posts/\(userID)/\(key)/": post]
ref.updateChildValues(childUpdates)

在此处阅读有关写入数据的更多信息

其次,为了在多个位置进行修改,请使用答案,因为我最近遇到了同样的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Firebase - 跨多个位置的原子写入不起作用

来自分类Dev

从多个位置删除相同的值Firebase功能

来自分类Dev

Firebase原子写入

来自分类Dev

从Firebase中的多个位置接收到数据后继续执行

来自分类Dev

是否可以从数据库中的多个位置订阅Firebase onDisconnect()事件?

来自分类Dev

Android Firebase 更改多个值

来自分类Dev

如何向Firebase发送多个值

来自分类Dev

使用Firebase筛选和排序多个值

来自分类Dev

Firebase规则-多个默认值

来自分类Dev

在多个位置编码?

来自分类Dev

在Firebase中的不同节点中写入多个对象

来自分类Dev

存储多个Firebase参考

来自分类Dev

多个Firebase实例

来自分类Dev

存储多个Firebase参考

来自分类Dev

Firebase返回多个对象

来自分类Dev

将多个读取操作值一次附加到数组 - Swift 和 Firebase

来自分类Dev

HTML表单在多个位置使用值

来自分类Dev

如何在多个位置更改字符串值?

来自分类Dev

NuGet Restore的多个位置

来自分类Dev

nginx多个位置块

来自分类Dev

Tweepy 过滤多个位置

来自分类Dev

将文件从请求移动或复制到多个位置

来自分类Dev

PowerShell-将文件复制到多个位置

来自分类Dev

将文件移动到多个位置的正确方法

来自分类Dev

NetBeans 将构建发送到多个位置

来自分类Dev

在Firebase上查询多个键

来自分类Dev

并行等待多个Firebase调用

来自分类Dev

Swift-Firebase多个快照

来自分类Dev

使用 Firebase 下载多个文件