我在一个用Swift编写的iOS应用程序中使用Firebase。
static func createUserRecord(uid: String, user: User){
let userDictionary = user.getJSON()
self.usersRef.child(uid).setValue(userDictionary)
}
在我发布应用程序之前,这段代码运行良好,但在发布应用程序后,我无法再添加用户记录。应用程序的所有其他功能都运行良好,包括保存和检索一些数据。有人能发现这段代码中的错误吗?
即使路径不存在,setValue
也能正常工作吗?例如,如果路径a/b/
存在,而我调用了a/b/c.child('d').setValue("abcd")
,这能正常工作吗?
1条答案
按热度按时间axzmvihb1#
如果路径还不存在,调用
setValue()
将创建该路径。根据数据库(或您的安全规则),您的
user.getJSON()
更有可能包含无效的内容。您将需要附加一个完成块来检测此情况。
下面是StackOverflow文档中的一个执行此操作的示例:
读操作可能无法工作的常见原因是安全规则拒绝该操作,例如,您未通过身份验证(默认情况下,数据库只能由通过身份验证的用户访问)。
你可以在控制台输出中看到这些违反安全规则的行为。但是很容易忽略这些。你也可以在自己的代码中处理它们,使它们更明显地可见,这在开发过程中特别有用(因为你的JSON、规则和代码经常变化)。
要在iOS上检测失败的读取,您必须实现观察器的
withCancel
块: