在现有的Firebase中添加新的键值对

8

这可能是一个相当基础的问题,但到目前为止,我在Google上搜索了很多都没有找到解决我的问题的答案。我有一个Firebase Web应用程序,其中数据结构非常简单。最初,它是空的,就像这样:

fireRef {
}

我希望能够添加键值对,其中键由用户创建,而值只是一些文本。例如,用户将他们的姓名作为键,年龄作为值输入。然后我想将这些数据发送到服务器,并使Firebase看起来像这样:

fireRef {
    John : 25,
}

我可以使用以下方法完成这个添加操作:
var name = getUserName();
var age = getUserAge();
var node = {};
node[name] = age;
fireRef.set(node);

然而,我希望多个人能够执行此操作。当我尝试将新人添加到服务器时,旧的“John: 25”对变为红色并消失,只剩下新的键值对。

如何保留两者并维护一组键值对的数据集?


如果您正在使用Firebase的JavaScript SDK,您可以使用相同的参数调用update()方法。 - Frank van Puffelen
3个回答

11
当我们推送数据到Firebase时,会生成唯一的ID。
例如:
var fireRef = new Firebase('https://<CHANGE_APP_NAME>.firebaseio.com/fireRef');
var newUserRef = fireRef.push();
newUserRef.set({ 'name': 'fred', 'age': '32' });

另一种方法是直接设置子元素:

var fireRef = new Firebase('https://<CHANGE_APP_NAME>.firebaseio.com/fireRef');
fireRef.child(1).set({'name':'user2','age':'34'});
fireRef.child(2).set({'name':'user3','age':'24'});

1
请注意,在您的第一个示例中,您也可以简单地执行 fireRef.push({ 'name': 'fred', 'age': '32' }); - user2124834
@Marein 谢谢你提供的信息,下次会用到。 - bprasanna

6

@user3749797,我对这个确切的问题感到困惑。

@learningloop提供了一个很好的解决方案,因为它能够实现向Firebase添加数据的任务,但是有一个选项可以将新的k,v(名称、年龄)对添加到单个JSON关联数组中,而不是推送到一组关联数组。 实际上,@learningloop看到的是:

[
    { 
        name: steve, 
        age: 34 
    }, 
    { 
        name: mary, 
        age: 22 
    }
]

也许他的方法更好,但你和我正在寻找这个:
    { 
        steve: 34, 
        mary: 22 
    }

我已经成功地添加了这个k,v对的列表

    var fireRef = new Firebase('https://<CHANGE_APP_NAME>.firebaseio.com/fireRef');
    fireRef.update({ 'jobe': '33'});

产出

    { 
        steve: 34, 
        mary: 22, 
        jobe: 33 
    }

在我的Firebase中。

有关保存到Firebase的完整文档[在此]


0

只是为了更清晰地补充@Charlie的答案:

以下对我有效:

admin.database().ref(SITE).child("ChildName").child("2ndLevelChild") .update({[KeyVariable]:valueVariable});

显然,如果我像下面这样使用它,它不起作用(它会覆盖):

        var newChild = {};
        newChild["ChildName/" + "2ndLevelChild"] = {
          [KeyVariable]: valueVariable
        };

       admin.database().ref(SITE).update(newChild);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接