Я использую базу данных 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)
Я понимаю ошибку, что не удается установить свойство anivDate, которого нет в моей базе данных реального времени firebase.Это будет исправлено, если я вручную добавлю свойство в БД.Но это не практическое решение.Итак, каково решение здесь?
Чтобы определить исправление: я ожидаю добавить новое свойство, если оно еще не существует, просто обновите его.