Беспорядок функций Firebase: Какая база данных? - PullRequest
0 голосов
/ 08 июня 2018

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

Нужно ли давать приложениям определенные имена для коллекций ... скажем, AwesomeAppUsers, ThatOtherAppUsers иAnotherAppUsers?Или что?Просто взаимно объединяйте пользователей в разделе "/ users"?

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

Там нет настройки, нет конфигурации для того, где она должна быть указана, вы просто входите с помощью firebase, а затем вы запускаете

firebase deploy --only functions

А потом магия.

Может кто-нибудь, пожалуйста, демаггифицировать это и объяснить, как приложение может взаимодействовать с конкретными функциями, когда нет настройки?

Хуже всего, когда я вижу это при написании приложениягиды.Как здесь http://resocoder.com/2018/05/25/firebase-firestore-chat-app-cloud-functions-fcm-ep-8-kotlin-android-tutorial/, два разных репозитория, серверная часть и приложение ... как приложение узнает, на какую из серверных функций квинтиллиона вы будете писать, чтобы подписаться?

 return admin.messaging().sendToDevice(registrationTokens, payload).then( response => {
            const stillRegisteredTokens = registrationTokens

            response.results.forEach((result, index) => {

КакРазрешает ли .sendToDevice отправлять не на все устройства в юниверсе, а только на те, которые конкретно относятся к приложению ... которое снова настроено в другом хранилище ... никаких настроек, ничего на это не указывает.Где это происходит?

Как эта функция «знает» только об отправке сообщений в конкретные приложения Android, связанные с этим?

// The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers.
const functions = require('firebase-functions');

// The Firebase Admin SDK to access the Firebase Realtime Database.
const admin = require('firebase-admin');
admin.initializeApp();

// Take the text parameter passed to this HTTP endpoint and insert it into the
// Realtime Database under the path /messages/:pushId/original
exports.addMessage = functions.https.onRequest((req, res) => {
    // Grab the text parameter.
    const original = req.query.text;
    // Push the new message into the Realtime Database using the Firebase Admin SDK.
    return admin.database().ref('/messages').push({original: original}).then((snapshot) => {
        // Redirect with 303 SEE OTHER to the URL of the pushed object in the Firebase console.
        return res.redirect(303, snapshot.ref.toString());
    });
});

// Listens for new messages added to /messages/:pushId/original and creates an
// uppercase version of the message to /messages/:pushId/uppercase
exports.makeUppercase = functions.database.ref('/messages/{pushId}/original')
.onCreate((snapshot, context) => {
    // Grab the current value of what was written to the Realtime Database.
    const original = snapshot.val();
    console.log('Uppercasing', context.params.pushId, original);
    const uppercase = original.toUpperCase();
    // You must return a Promise when performing asynchronous tasks inside a Functions such as
    // writing to the Firebase Realtime Database.
    // Setting an "uppercase" sibling in the Realtime Database returns a Promise.
    return snapshot.ref.parent.child('uppercase').set(uppercase);
});

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

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

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

Токен регистрации устройства на Android : https://firebase.google.com/docs/cloud-messaging/android/client#sample-register

Теперь вы можете использовать этот токен для отправки сообщений через Firebase Cloud Messaging в вашей функции Firebase.

Отправка документации по отдельным устройствам в Firebase: https://firebase.google.com/docs/cloud-messaging/admin/send-messages#send_to_individual_devices

0 голосов
/ 08 июня 2018

Каждый раз, когда вы создаете проект в firebase, вам необходимо загрузить файл с именем google-services.json .Этот файл выглядит как это .

{
  "project_info": {
    "project_id": "mockproject-1234",
    "project_number": "123456789000",
    "name": "FirebaseQuickstarts",
    "firebase_url": "https://mockproject-1234.firebaseio.com"
  },

и многое другое.Он определяет проект, над которым вы работаете.Если вы работаете с бэкэндом, использующим firebase, то же самое применимо, вам нужно использовать специальный файл конфигурации, и он сообщает вашему локальному проекту, над каким проектом firebase он будет работать.

Каждый проект firebase имеет свою собственную базу данных.В облачном хранилище или в реальном времени вы можете изменить только одну базу данных, связанную с этим небольшим файлом / проектом.

То же самое для уведомлений и всего остального, включенного в базу данных.Все они ограничены вашим проектом, который указан в файле google-services.json .

Когда вы загружаете функции облака, вы загружаете их в конкретный проект, который сделает ихДля работы с устройствами этого проекта, как правило, устройства этого проекта имеют файл google-services.json, связанный с таким проектом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...