Nano Hash - криптовалюты, майнинг, программирование

Использование клавиши Firebase Push в качестве клавиши при втором нажатии

Я пытаюсь добавить два связанных элемента в свою базу данных Firebase. Я хочу протолкнуть один элемент, затем получить вновь созданный ключ этого элемента и использовать его как ключ для второго элемента в другом дереве. Я попытался запросить базу данных, чтобы получить последний созданный ключ и использовать его в качестве ключа для второго нажатия, но он все еще просто генерирует для него новый ключ. Вот код, который я использую:

save: function() {
    if (this.$.document.isNew && (this.editableCard.title || this.editableCard.body)) {
        return this.$.document.save(this.cardsPath).then(function() {
            this.$.document.reset();
            var sceneRef = firebase.database().ref().child(this.cardsPath);
            var scene = sceneRef.orderByKey().limitToLast(1);
            var sceneKey = scene.key;
            this.$.document.save('/documents/', sceneKey);
        }.bind(this));
    }
    return Promise.resolve();
}

(Я использую Polymer, и моя отправная точка - это демонстрационное приложение для заметок для Polymerfire).

Есть идеи, как я могу получить новый ключ первого нажатия и использовать его для второго нажатия? Спасибо!

ИЗМЕНИТЬ

Я нашел ответ в документации Firebase для чтения и записи в базу данных для Интернета. Ссылка


Ответы:


1

push () немедленно возвращает DatabaseReference. Вы можете спросить эту ссылку, каков ее ключ, используя getKey (), затем используйте эту строку для обновления другого местоположения в вашей базе данных.

02.01.2017

2

Вы можете получить доступ к свойству key в исходной ссылке на базу данных и использовать его в качестве ключа для второй, например:

let firstObjRef = firebase.database().ref('/first/path/).push(firstObj, (error) => {
  videoObj["roomUploadedTo"] = this.roomName;
  var updateObj = {};
  updateObj[videoObjRef.key] = videoObj;

  firebase.database().ref('/second/path/').update(updateObj).then( (e) => {
    console.log('update went through. booyah! ' + e);
  })
05.01.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..