Рубрики
Без рубрики

Операции базы данных в базе данных Firebase Realtime с использованием JS SDK

Firebase Google дает нам возможность запустить нашу бэкэнд -инфраструктуру, фактически не управляя S … Tagged с Firebase, JavaScript, NoSQL, Node.

Firebase Google дает нам возможность управлять нашей бэкэнд -инфраструктурой, фактически не управляя указанной инфраструктурой.

Некоторые из предложений Services Firebase включают в себя облачные функции для выполнения кода бэкэнд, аутентификации и баз данных

В консоли Firebase есть два предложения базы данных: база данных в реальном времени и облачная база данных. Эта статья сосредоточена на базовых операциях в базе данных в реальном времени.

База данных Firebase Realtime представляет собой управляемую службу базы данных NOSQL. Как и в случае с другими услугами Firebase, нам не нужно беспокоиться об управлении основной инфраструктурой или ресурсами.

Будучи базой данных NOSQL, данные не хранятся в реляционной (табличной) форме, а вместо этого используют модель документа в формате JSON. Данные хранятся в парах ключей.

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

{

  "games" : {

      "-M5GU2j383E8MaXXbLT3" : {

      "current_quesion" : 0,

      "latest_tweet" : "1251784979954241536",

      "start_tweet" : "1251784906830733315",

      "users" : {

        "AnxiousEtin" : 0,

        "ObasekiEtinosa" : 0,

        "tetrazoid" : 0

      }

    }

  }

}

Корневой узел ( trivyeah-twitter-client ) содержит игры для детских узлов, которые удерживаются -M5GU2J383E8MAXXBLT3 как ребенок. Этот узел имеет несколько узлов с конкретными значениями (например, current_question с 0), но также содержит пользователей узла с собственными детьми.

Взаимодействие с базой данных осуществляется посредством ссылок. Ссылка – это указатель на конкретный узел в базе данных. Эта ссылка позволит использовать доступ к данным, хранящимся в этом узле, это дети и выполнять операции на узле.

Используя Firebase-Admin Пакет, мы получим ссылку на БД.

const firebaseAdmin = require('firebase-admin')

firebaseAdmin.initializeApp();
var db = firebaseAdmin.database().ref()

DB теперь содержит ссылку на корень, в приведенном выше примере Trivyeah-twitter-client нашей базы данных, и мы можем выполнить любые операции на ней.

Если бы мы вместо этого хотели ссылку на какой -то другой узел в документе, мы бы перенесли путь к нужному узлу к ref () метод

const firebaseAdmin = require('firebase-admin')

firebaseAdmin.initializeApp();
var gameDb = firebaseAdmin.database().ref('games')

Приведенный выше код даст нам ссылку на игровой узел. Чтобы получить более глубоко вложенный узел пройти путь, разделенный Slashes, например, ref (‘Games/-m5gu2j383e8maxxblt3/users’)

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

const firebaseAdmin = require('firebase-admin')

firebaseAdmin.initializeApp();
var gameDb = firebaseAdmin.database().ref('games')

var childNodeUsersDb = gameDb.child('games/-M5GU2j383E8MaXXbLT3/users')

Четыре основные функции постоянного хранилища – это Создать , Читать , Обновление и Удалить Анкет Давайте посмотрим на каждую из этих операций в базе данных Firebase Realtime.

Создать операции

Создайте операции, настойчивая новую запись для хранения. В базе данных в реальном времени метод SET является основной операцией записи. Есть два разных способа его использования, и здесь будут показаны.

(Over) Написание по пути

Использование метода SET будет записывать данные в указанное местоположение, если в этом месте были какие -либо данные, они будут перезаписаны.

Он принимает любое значение JavaScript в качестве первого аргумента, и это значение будет сохраняться. Из официальной документации, «Вы можете передать установить строку, номер, логический, нулевой, массив или любой объект JSON».

const firebaseAdmin = require('firebase-admin')

firebaseAdmin.initializeApp();
var foodDb = firebaseAdmin.database().ref('breakfast')

foodDb.set({
    cereal: {
        calories: 3,
        price: 50,
        comment: "Great for when you're in a hurry"
    }
    fufu: {
        calories: 12,
        price: 10,
        comment: "Cheap, but long lasting. Really long"
    }
})

Этот пример выше устанавливает все на узле завтрака на объект, в котором мы передали. Все, что могло быть там раньше, перезаписано.

Добавление данных в узел

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

const firebaseAdmin = require('firebase-admin')

firebaseAdmin.initializeApp();
var mealsDb = firebaseAdmin.database().ref('meals')

let newMeal = mealDb.push() //newMeal will hold the reference to the new record and can be set without overwriting it's siblings

newMeal.key 
//returns the key for the new record. Something like "-M5GU2j383E8MaXXbLT3"

Затем мы можем использовать метод set () в этой новой ссылке.

const firebaseAdmin = require('firebase-admin')

firebaseAdmin.initializeApp();
var mealsDb = firebaseAdmin.database().ref('meals')

let newMeal = mealDb.push()

newMeal.set({
    timeOfDay: "morning",
    mealEaten: "fufu"
    stomachStatus: "bloated",
    caloriesGained: 30
})

Если вам не нужна ссылка на новый узел для любых других операций, вы можете цепорить push () и set () вызовы

const firebaseAdmin = require('firebase-admin')

firebaseAdmin.initializeApp();
var mealsDb = firebaseAdmin.database().ref('meals')

let newMeal = mealDb.push().set({
    timeOfDay: "morning",
    mealEaten: "fufu"
    stomachStatus: "bloated",
    caloriesGained: 30
})

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

Обновление операций

Операции обновления добавляют данные в ссылку, указанную без перезаписи каких -либо других свойств.

{

  "meals" : {
    "-K5GU2p242E8MaXHbQT1" : {
          timeOfDay: "morning",
          mealEaten: "fufu"
          stomachStatus: "bloated",
          caloriesGained: 30
      },
    "-K5GU2r322X8YadRZQT1" : {
          timeOfDay: "afternoon",
          mealEaten: "cornflakes"
          stomachStatus: "slightlyFull",
          caloriesGained: 2
      }
  }

}

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

const firebaseAdmin = require('firebase-admin')

firebaseAdmin.initializeApp();
var mealsDb = firebaseAdmin.database().ref('meals')

let newMeal = mealDb.update({
    uniqueMealKey: {
        timeOfDay: "evening",
        mealEaten: "nightcap"
        stomachStatus: "light",
        caloriesGained: -4
    }
})

Читать операции

JS SDK поддерживает неблокирующие чтения и имеет несколько событий, которые подсказывают чтение. on () Метод принимает событие, которое мы хотим выслушать как первый аргумент и обратный вызов, где мы можем получить доступ к моменталу данных в качестве второго аргумента.

Примечание : Обратный вызов, который мы переходим к on () Метод запускается каждый раз, когда происходит наше мероприятие Но если вы хотите выполнить чтение и связанный обратный вызов в один раз, используйте один () метод вместо. Оба метода имеют идентичные подписи.

События, которые мы можем выполнить, читают:

  • “ценность”
  • “Child_added”
  • “Child_changed”
  • “Child_Removed”
  • “Child_moved”

Придерживаться нашего еда Узел, мы можем получить все блюда, используя событие Value.

const firebaseAdmin = require('firebase-admin')

firebaseAdmin.initializeApp();
var mealsDb = firebaseAdmin.database().ref('meals')

mealDb.once("value", function (snapshot) {
        let meals = snapshot.val()
    }
})

на () / один () является асинхронным методом и принимает обратный вызов.

Когда вызов базы данных завершен, обратный вызов запущен и передается экземпляр DataSnapShot. Этот объект содержит состояние базы данных в настоящее время, когда событие («значение» в данном случае) было запущено. Мы можем позвонить val () Метод на снимке для получения объекта JavaScript (или примитивного значения), представляющего значения ссылки узла, которые было вызвано событием.

{
    "-K5GU2p242E8MaXHbQT1" : {
        timeOfDay: "morning",
        mealEaten: "fufu"
        stomachStatus: "bloated",
        caloriesGained: 30
    },
    "-K5GU2r322X8YadRZQT1" : {
        timeOfDay: "afternoon",
        mealEaten: "cornflakes"
        stomachStatus: "slightlyFull",
        caloriesGained: 2
    },
    "uniqueMealKey": {
        timeOfDay: "evening",
        mealEaten: "nightcap"
        stomachStatus: "light",
        caloriesGained: -4
    }
}

Мы получили бы вышеуказанный объект JavaScript в нашей переменной еды, а затем могли бы выполнить то, что мы хотели на нем.

На DataSnapShot Пример, есть и другие методы. Вы можете просмотреть их в документации здесь.

Удалить операции

Мы рассказали о удалении данных из узла, проходящего мимо, ранее в статье. Чтобы удалить узел, просто используйте set () Метод на его ссылке, чтобы установить его на нулевой

const firebaseAdmin = require('firebase-admin')

firebaseAdmin.initializeApp();
var mealsDb = firebaseAdmin.database().ref('meals')

mealDb.child('uniqueMealKey').set(null)

Используя Ребенок () Метод, чтобы получить ссылку на детский узел на еду, которую мы хотим удалить, мы затем называем set () На этой ссылке и передайте его NULL. Это удалит все данные на UniqueMealKey Анкет

Так выполняются основные операции БД в базе данных Firebase Realtime с использованием SDK Firebase JS. SDK также доступен в Java, Go и Python. Хотя SDK Go и Python выполняют блокирующие чтения.

Документы администратора базы данных Firebase – https://firebase.google.com/docs/database/admin/start

Оригинал: “https://dev.to/obasekietinosa/database-operations-on-the-firebase-realtime-database-using-the-js-sdk-1b3a”