Javascript 如何将阵列更新到firebase?
我是这个领域的新手。我看到互联网上有很多方法,其中大部分都是关于Firebase的旧版本,比如使用Javascript 如何将阵列更新到firebase?,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我是这个领域的新手。我看到互联网上有很多方法,其中大部分都是关于Firebase的旧版本,比如使用push(),update(),save()。所以,我真的不知道如何更新它。我试过这样做: function writeNewEvent(eObj) { // A post entry. var userObj = authObj.$getAuth(); // Get a key for a new Post.
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 "]"
你能告诉我我的方法是否正确吗?以及如何实现此功能。看起来您有一个ID,因此不需要使用push(),只需在ID处设置(),如:
// 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()将返回一个thenable引用。尽管您预先获得了一个ID,但工作仍然是异步完成的 在互联网上有很多方法是的,但是在Firebase文档中有一种方法。试着先读一下。例如,push
不会像您希望的那样返回包含键的对象。它返回一个promise,promise的值有一个可以使用的键
字段。所有这些都在文档中得到了很好的解释;像往常一样,你只需要阅读它。