我是这个领域的新手。我发现互联网上有很多种方式,其中大多数是关于旧版本的Firebase,例如使用push()
,update()
,save()
。所以,我真的不知道如何更新它。我试过这样:
function writeNewEvent(eObj) {
// A post entry.
var userObj = authObj.$getAuth();
// Get a key for a new Post.
var newEventKey = ref.child('events').child(userObj.uid).push().key;
// Write the new post's data simultaneously in the posts list and the user's post list.
var updates = {};
updates['/events/' + userObj.uid+ '/' + newEventKey] = userObj;
return ref.update(updates);
}
但错误是:
angular.js:13920 Error: Firebase.update failed: First argument contains an invalid key ($d) in property 'events.LRnkjDgEu1QtuvUTazTwyms4U063.-KW56c87MThrK0PZp-XH.f'. Keys must be non-empty strings and can't contain ".", "#", "$", "/", "[", or "]"
你能告诉我我的方法是否正确吗?以及如何实现这个功能。
答案 0 :(得分:0)
看起来你有一个ID所以你不需要使用push(),只需在id上设置set():
// assuming your input looks somthing like:
let eObj = {
"uuid": "98765-8765-1234567890-7890",
"some-data": "stuff",
"other-data": "other stuff",
"numeric-data": 12345
}
function writeNewEventUsingObjUuid(eObj) {
// A post entry.
var userObj = authObj.$getAuth();
return ref.child('events').child(userObj.uid).set(eObj).then(function () {
console.log('Event added with ID: ' + userObj.uid);
}).catch(function (e) {
console.log('Error adding event: ' + e.message);
});
}
如果你真的想使用push(),firebase会为你分配一个ID。请注意,像你这样的空push()会返回一个可引用的引用。尽管您事先获得了ID,但仍然会以异步方式完成工作。