【发布时间】:2019-02-26 21:52:05
【问题描述】:
我在我的 ionic 应用程序中使用 firebase 实时数据库并使用 angularfire2。我的数据存储如下:
"users" : {
"230A3lKQqWh0TczOGP8sbtMVpuF2" : {
"email" : "xxx@gmail.com",
"isAdmin" : false,
"name" : "Santosh Yadav",
"pic" : "https://graph.facebook.com/xxx/picture"
},
"oSEYj0zrkhPCk9r7uwyOOkHcqe53" : {
"email" : "yyy@gmail.com",
"isAdmin" : true,
"name" : "Vik Kumar",
"pic" : "https://graph.facebook.com/xxx/picture"
},
"tl3uvseaBeWVYFCTwSngUqcSokX2" : {
"email" : "zzz@gmail.com",
"isAdmin" : false,
"name" : "Neeti Singhal",
"pic" : "https://graph.facebook.com/xxx/picture"
}
}
我们最终存储了更多的用户数据,例如出生日期和周年纪念日,当我们尝试如下更新时:
createUser(user:User){
console.log('start of create user')
var payload = {
"name": user.name,
"email": user.email,
"pic" : user.pic,
"dob" : user.dob,
"anivDate" : user.anivDate,
}
return this.db.object('/users/' + user.uid).set(payload).then(
(resp) => console.log("user created")
).catch(
(err) => console.log("issues creating user:" + err)
)
}
失败并出现错误:
ERROR Error: Reference.set failed: First argument contains undefined in property 'users.oSEYj0zrkhPCk9r7uwyOOkHcqe53.anivDate'
at validateFirebaseData (validation.js:113)
at validation.js:140
at forEach (obj.js:46)
我了解无法设置我的 firebase 实时数据库中不存在的属性 anivDate 的错误。如果我手动将属性手动添加到数据库中,这将解决。但这不是一个实际的解决方法。那么,这里的解决方案是什么?
要定义修复:如果不存在,我希望添加一个新属性,否则只需更新它。
【问题讨论】:
-
不确定我是否理解。错误消息表明
user.anivDate不存在(这就是undefined的含义)。这是您预期会发生的情况吗?
标签: firebase firebase-realtime-database angularfire2