Firebase push -删除唯一对象并插入新对象(基本上覆盖内容)
Firebase push - deletes unique object and inserts new one (Overwrites content basically)
我有一个使用firebase运行的应用程序。当我尝试使用push()方法时,它基本上覆盖了现有的JSON。这里有一个例子:第一次运行时,将生成以下JSON:
JSON
"deviceIDs" : {
"-JzCx5C_13eoXPEgklMW" : {
"author" : "gracehop22",
"deviceID" : "99alpha",
"title" : "Announcing COBOL, a New Programming Language"
}
}
下一次,如果我调用相同的函数,上面的JSON将被删除,并插入一个新的JSON,例如:
JSON
"deviceIDs" : {
"-JzCxbuEj2V1kmvvgqnc" : {
"author" : "gracehop22",
"deviceID" : "99alpha",
"title" : "Announcing COBOL, a New Programming Language"
}
}
下面是我的代码片段:
function CreateUserProfile(UID, name, email, deviceID) {
var ref = new Firebase($scope.firebaseurl + '/' + UID);
var profileArray = {UserProfile:{}};
profileArray.UserProfile.UID = UID;
profileArray.UserProfile.name = name;
profileArray.UserProfile.email = email;
profileArray.UserProfile.deviceID = deviceID;
var onComplete = function (error) {
if (error) {
console.log('Synchronization failed');
} else {
//1. On Success, Store Key User Profile Elements
localStorage.setItem("kasimaProfileInfo",JSON.stringify(profileArray));
$rootScope.username = name;
//2. Hide the feedback and change screens
$timeout(function () {
$scope.HideFeedback();
$scope.ChangeLoc('/featured');
}, 1500);
}
};
ref.set(profileArray, onComplete);
var postsRef = ref.child("deviceIDs");
var newPostRef = postsRef.push();
newPostRef.set({
deviceID: deviceID,
author: "gracehop22",
title: "Announcing COBOL, a New Programming Language"
});
}
当您设置profileArray
:
...
ref.set(profileArray, onComplete);
var postsRef = ref.child("deviceIDs");
...
您可能需要在这里使用update()
:
...
ref.update(profileArray, onComplete);
var postsRef = ref.child("deviceIDs");
...
更新 Firebase update()
函数在传递给它的JSON对象中设置属性的值。所以你的新profileArray.UserProfile
将取代现有的数据。
解决方案是不在本地构建嵌套的JSON结构,而是在需要更新的较低位置更新数据:
ref.child('UserProfile').update(profileArray.UserProfile, onComplete);
这样就完全不需要profileArray
:
var userProfile = {
UID: UID,
name: name,
email: email,
decideID: deviceID
};
ref.child('UserProfile').update(userProfile, onComplete);
工作示例见:http://jsbin.com/ciqoge/edit?js,console
对于下次:如果你直接提供这样的jsbin/jsfiddle,它将更容易快速帮助你。
- 如何在循环中使用jQuery.on()方法,而不覆盖我循环的对象
- 如何使用自定义功能覆盖时间轴对象.js时间轴对象的_repaintMinorText
- 如何覆盖 javascript 对象数组中的元素
- 合并两个对象而不覆盖
- 覆盖外部对象's函数在Internet Explorer中使用JavaScript
- IE中对象上的Div覆盖
- 使用原型时,JavaScript对象会被覆盖
- (Javascript)覆盖对象内置或继承的属性
- 覆盖对象's的长度属性
- JavaScript两个对象-互相覆盖
- 在javascript中,如何将相同的对象两次推送到一个数组中,并进行一些修改而不覆盖数组
- Javascript 覆盖对象的方法
- 保护公共方法,使其在 javascript 中被 chield 对象覆盖
- 为什么我的 JS 循环会覆盖对象中以前的条目
- 恢复覆盖的窗口.JSON 对象
- 嵌套对象相互覆盖
- 将多个对象推入JavaScript数组,但会导致对象覆盖
- 为什么可以't继承的对象覆盖继承调用中的原型函数
- 对象覆盖不起作用
- Javascript多维对象覆盖上次插入的项