2

我一直在尝试将一个孩子动态添加到我的 firebase 数据引用 URL,但到目前为止没有运气。

假设我有以下数据结构:

MyApp
|-beta_signups
| -用户
|--fred
|----email "fred@test.com"

我希望能够根据“注册”部分下的电子邮件地址将注册的人添加为孩子。这是我尝试过的,但没有奏效。

var myDataRef = new Firebase("https://myapp.firebaseio.com/beta_signups/");
  $('#submit').click(function() {
      var email = $('#email').val();
      myDataRef.child(email).push({email: email, beta_key: false});
      $('#email').val('We got it.');
  });

关于如何动态添加孩子的任何建议?

4

1 回答 1

5

您不能将电子邮件地址用作子路径的键,因为它包含无效字符。请参阅文档中的创建参考

您还将基于电子邮件地址创建一个子电子邮件,然后使用push. 可能,您应该摆脱这个.child(email)位并使用 push 来创建记录。

var user_id = myDataRef.push({email: email, beta_key: false}).name();

首先要问的是您是否真的想通过电子邮件存储用户。通常,ID 会更有用(他们可能稍后会更改电子邮件,在这种情况下,您必须重新键入系统中的所有用户数据)。

如果这是一个要求,那么您将不得不对它们进行哈希处理或对其进行消毒。例如:

// replace all forbidden characters with something that won't appear in the email address
var key = email.replace(/[.$\[\]\/#]/, ','/);
myDataRef.child(key).set({email: email, beta_key: false});
于 2013-04-02T21:58:14.877 回答