Javascript FireBase-angularfire将对象键设置为变量

Javascript FireBase-angularfire将对象键设置为变量,javascript,angularjs,firebase,angularfire,Javascript,Angularjs,Firebase,Angularfire,我在angularjs应用程序中使用firebase(angularfire)来存储和处理我的消息系统,但似乎不知道如何复制firebase文档中的示例数据 // room members are easily accessible (or restricted) // we also store these by room ID "members": { // we'll talk about indices like this below

我在angularjs应用程序中使用firebase(angularfire)来存储和处理我的消息系统,但似乎不知道如何复制firebase文档中的示例数据

 // room members are easily accessible (or restricted)
      // we also store these by room ID
      "members": {
        // we'll talk about indices like this below
        "one": {
          "mchen": true,
          "hmadi": true
        }
      }
这里的
members.one
包含用户名作为一个键,我也在尝试对我的数据执行此操作,但似乎无法找到解决方案

我的firebase数据的成员部分如下所示:

成员{one:{}

我在$scope中设置了两个变量

user_name = kep; //person chatting with name
sender_name = pek; //current user name
因此,我想使用set函数将数据插入
成员。一个
或在本例中为
成员。user_name+':'+sender_name
,但我遇到的问题是如何在不创建父对象的情况下实际插入数据

ref.child('members').child(user_name + ':' + sender_name).set({
    user_name: true, sender_name: true
 });
当我试图将user_name和sender_name传递给set()函数时,问题就出现了。下面是它得到的结果

members { "kep:pek": { user_name: true, sender_name: true }}
正如我所希望的那样:

members { "kep:pek": { kep: true, pek: true }}
如果我将user_name和sender_name放入一个对象中,然后在传递对象的情况下运行set()函数,它将创建以下结构,这不是我想要的:

members { "kep:pek": { newObject: { kep: true, pek: true }}}

这里是Firebase团队成员

Firebase数据库只是一个JSON文档

假设您希望以这种方式构造数据:

{
  "members" : {
    "kep:pek" : {
      "kep" : true,
      "pek" : true
    }
  }
}
通过使用
.child()
方法或通过在JavaScript对象中创建键来创建自定义键

var rootRef=新Firebase(“”);
var membersRef=rootRef.child('members');
var user_name='kep';
变量发送方名称='pek';
//用于存储自定义密钥的子对象
var objectToSave={};
//用[]语法设置键
objectToSave[user_name]=true;
objectToSave[sender_name]=true;
//使用带格式字符串的.child()保存对象
membersRef.child(user_name+':'+sender_name).set(objectToSave);

你好,大卫,谢谢你抽出时间来帮忙。我试着做上述操作,但它是作为对象插入的,而不仅仅是键值对。它像这样插入
members.one.obj{user\u name:true}
而不是
members.one{user\u name:true}
用户是在单击(聊天室)时生成的,这就是为什么用户名和发送者名称需要在需要密钥的任何地方传递,您可以使用
.child()
,然后在该路径上设置所需的数据。最终,一切都只是一个JSON对象。我更新了我的答案来表示这一点。当我使用上面的插入时,它会创建以下结构:
members:{one:{objectToSave:{“mchen”:true}}}
where as-as-as-my-want
members:{one:{“mchen”:true}
我一直遇到的唯一问题是,当像我的第二个示例那样插入时,如何传递用户名以显示为mchen?-@大卫·伊斯特我现在很困惑。在你的第一条评论中,你说不想要
成员.one{user_name:true}
,现在你说这就是你想要的。不管您想要什么,它都只是一个键/值存储。使用键名调用
.child(keyName)
将得到您想要的。很抱歉造成混淆,我重新措辞了我的问题,也许现在更有意义了?
var rootRef = new Firebase('<my-firebase-app>');
var membersRef = rootRef.child('members');
var user_name = 'kep';
var sender_name = 'pek';
// child object to store custom keys
var objectToSave = {};
// set keys in [] syntax
objectToSave[user_name] = true;
objectToSave[sender_name] = true;
// use .child() with a formatted string to save the object
membersRef.child(user_name + ':' + sender_name).set(objectToSave);