2015-04-05 2 views
6

Я создаю массивы с помощью Angularfire, но я не могу установить имя ключа. Firebase автоматически дает мне секретный ключ (например, Jm9vLy8Lye-KS35KsmL), но я хотел бы сам установить его в нечто более значимое. Непонятно, как я это делаю в Angularfire. Я использую метод $ надстройку на $ firebaseArray:Как установить имя ключа в массиве в Angularfire

var firebaseRef = new Firebase("https://firebase_location"); 
$scope.messages = $firebaseArray(firebaseRef); 

$scope.messages.$add( 
    { 
    FirstName: patient.FirstName, 
    LastName: patient.LastName 
    } 
).then(function(firebaseRef) { 
    var id = firebaseRef.key(); 
}); 

Данные хранятся в порядке, и я могу видеть это на моей приборной панели. Тем не менее, id всегда является загадочным значением firebase. Мне бы хотелось, чтобы я мог сам установить что-то значимое. В моем случае идентификатор индивидуального пациента был бы значимым ...

Любые мысли?

Спасибо!

ответ

0

Добавление элемента в массив firebase делает firebase для определения уникального идентификатора для вас. Если это не то, что вы хотите, я думаю, вы можете попробовать получить объект «сообщений» с помощью $ firebaseObject, вместо того, чтобы просто получать список с $ firebaseArray. Затем вы сможете редактировать свой объект в js, чтобы добавить элементы в коллекцию сообщений. Таким образом, вы можете использовать идентификатор, который наилучшим образом соответствует вашим потребностям. Наконец, вы должны $ save() весь ваш объект. Смотрите здесь: https://www.firebase.com/docs/web/libraries/angular/api.html#angularfire-firebaseobject

Надеюсь, это поможет.

1

Благодарим за отзыв.

Я обнаружил, что дочерняя функция будет делать то, что мне нужно. Сначала я определяю ребенка, а затем задаю его.

var patient_child = firebaseScreenRef.child(patient.PatientId); 
     patient_child.set(
     { 
      FirstName: patient.FirstName, 
      LastName: patient.LastName, 
     }); 
+0

Это помогло! Я сначала попытался использовать как $ firebaseObject, так и $ firebaseArray, но только ref работал - вам нужно использовать ref напрямую ... –

+0

Пришло время понять это, но оно работает. Благодаря ! –

0

На ваш вопрос я нашел объяснение. Вам не нужно использовать firebaseObject, вы должны использовать исх непосредственно:

var ref = new Firebase(FURL); 

createProfile: function(id ,user) { 

    var profile = {`enter code here` 
       name: user.name, 
       email: user.email, 
       gravatar: get_gravatar(user.email, 40) 
      }; 

    var profileRef = $firebaseArray(ref.child('profile').child(id)); 

    return ref.child('profile').child(id).set(profile); 
}, 

В коде я использую реф ссылаться на мой адрес. С profileRef я создал дочерний профиль, и я добавил id для профиля. Впоследствии я использую ref напрямую, чтобы установить значение profile для идентификатора, который я хочу. Понимаете, это очень легко.

Смежные вопросы