2013-04-02 2 views
2

Я пытаюсь динамически добавлять ребенка к моему URL-адресу данных базы данных firebase, пока что не повезло.Добавление динамического дочернего элемента в мой ссылочный адрес Firebase

Предположим, у меня есть следующая структура данных:

MyApp
| -beta_signups
| -пользователей
| --fred
| ---- электронная почта "[email protected]"

Я бы хотел (-а) добавить людей, которые подписаны в качестве ребенка на основании их адреса электронной почты в разделе "Регистрация". вот что я пробовал, но это не сработало.

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

Вы не можете использовать адрес электронной почты в качестве ключа для дочернего пути, поскольку он содержит недопустимые символы. См. Creating References в документах.

Вы также создаете ребенка на основе адреса электронной почты, а затем создаете дочерний элемент электронной почты, используя push. Вероятно, вы должны просто избавиться от бит .child(email) и использовать push для создания записей.

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

Первое, что нужно задать, действительно ли вы хотите сохранить пользователей по электронной почте. Как правило, идентификатор будет намного полезнее (позже они могут поменять свой адрес электронной почты, и в этом случае вам нужно переписать все свои пользовательские данные в системе).

Если это требование, вам либо придется их хэш или дезинфицировать. Например:

// 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}); 
Смежные вопросы