2017-01-28 2 views
0

Я использую базу данных Firebase реального времени в Fuse. Используя выборку, я могу добавить новые элементы в базу данных GET и POST.Хранение уникальной клавиши Firebase с помощью предохранителей

Проблема, которую я пытаюсь получить или сохранить уникальный идентификатор для каждой записи. Мне нужен этот уникальный идентификатор, чтобы добавить URL-адрес базы данных, чтобы я мог редактировать конкретную запись. Любые советы или ресурсы о том, как это сделать, будут высоко оценены! Вот что у меня есть на данный момент:

структуры базы данных

{ 
    "-KbRJK2tHQSfvoHD400o" :{ 
     "description": "A description ", 
     "title":"A name" 
    }, 
    "-KbRJQi7ntTTTGBSZSVX" :{ 
     "description":"Another description", 
     "title":"Another name" 
    } 
} 

Получение данных

var Observable = require("FuseJS/Observable"); 
var Timer = require('FuseJS/Timer'); 

var activities = Observable(); 
var errorMessage = Observable(); 

var timer = Timer.create(function() { 
    load(); 
}, 100, true); 


function load() { 
    fetch('https://[myDatabase].firebaseio.com/.json?auth=[mySecret]', { 
      method: 'GET', 
      cache: 'default', 
      headers: { 
       "Content-type": "application/json" 
      } 
     }) 
     .then(function(result) { 
      if (result.status !== 200) { 
       console.log("Something went wrong :("); 
       return; 
      } 
      return result.json(); 
     }) 

     .then(function(data) { 
      var keys = Object.keys(data); 
       keys.forEach(function(key, index) { 
        if (index >= activities.length) { 
        var value = data[key]; 
        activities.add(value); 
        } 
       }) 
       }); 
}; 

module.exports = { 
    activities: activities, 
    errorMessage: errorMessage 
}; 

Ваши данные

var Observable = require("FuseJS/Observable"); 

var title = Observable(); 
var description = Observable(); 

function submit() { 
    fetch('https://[myDatabase].firebaseio.com/.json?auth=[mySecret]', { 
     method: 'POST', 
     headers: { 
      "Content-type": "application/json" 
     }, 
     body: JSON.stringify({ 
      "title": title.value, 
      "description": description.value 
     }), 
    }); 
} 

module.exports = { 
    title: title, 
    description: description, 
    submit: submit 
} 

Спасибо!

ответ

0

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

Если это так, то точно, как вы это сделаете, это будет зависеть от реализации Firebase в Fuse. Если посмотреть на Firebase docs, кажется, что нажатие новой записи в базу данных возвращает этот идентификатор в ответ. Если это так, вы должны связать обработчик .then() с запросом POST и посмотреть, какой ответ вы получите от Firebase.

В качестве альтернативы, поскольку вы уже знаете, как получить список записей и перебрать более Object.keys, вы можете просто обновить этот список после того, как сохранили новую запись. Это, безусловно, было бы лишним накладным капиталом, поэтому я бы рассматривал его как временное решение, а не решение.

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