Как я могу назначить контент указанному c вошедшему в систему пользователю в Flamelink и React Native? - PullRequest
0 голосов
/ 19 февраля 2020

Я использую Firebase с React Native и только что начал с Flamelink в качестве своей CMS.

Перед использованием Flamelink я смог получить указанное c содержимое от зарегистрированного пользователя через базу данных реального времени firebase, потому что схема была:

**fruits**
mwaKRypUrNb8rJdsj9YUxw0sA892
-M055RlZ7HBzgRD9LS1d
-M055Why2psB2kqE4mYO
-M05W3LK8C1kgFsPNRqa
-M05W47cbhJ2VA_Y2nnT
-M05W5Wu9Pp6TZJJPc8t
-M05W6Xc_iP1upbyENpj
-M05W7JnVt3t3DsjNaRT
-M05W8OuZph-1gDDY9UX
-M05W9Fws0_hsNCAyKDt
**users**
-zFWGnGhEmbfhjAJsUT99ZbkJBZ33

Как вы можете видеть, схема fruits имела пользовательское значение c.

С Flamelink схема выглядит следующим образом:

**flamelink**
--environments
----production
------content
--------**fruitEntryForm**
----------en-US
------------1582070066847
------------1582074440836
------------1582080914427

**schemas**
**media**
**permissions**
**settings**
**users**
--zFWGnGhEmbfhjAJsUT99ZbkJBZ33

Ниже приведен мой собственный код реакции:

const user = navigation.getParam("user");
     const currentUserData = await firebase
      .database()
      .ref("flamelink/users")
      .child(user.uid)
      .once("value");

const fruits = await app.content.get("content");

Как я могу изменить Flamelink, чтобы я мог управлять контентом в зависимости от того, какой пользователь вошел в систему?

1 Ответ

0 голосов
/ 19 февраля 2020

Насколько я понимаю, ваша коллекция фруктов может быть связана с несколькими пользователями, и основная проблема заключается в том, что база данных Firebase Realtime не позволяет запрашивать значение внутри массива. Cloud Firestore немного лучше в этом отношении.

Я бы посоветовал вам сделать, чтобы упростить ваши запросы, чтобы перевернуть отношения с ног на голову. Я хотел бы иметь коллекцию фруктов, которая у вас сейчас есть, без отношения к каким-либо пользователям Затем я бы создал коллекцию «Фрукты пользователей», в которой есть поле для UID пользователя с полем реляционного выбора, которое сопоставляется с несколькими записями в вашей коллекции Фрукты.

Из приложения React Native вы можете использовать наш SDK запросит коллекцию «Фрукты пользователей» и развернет связанные фрукты.

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

const userFruit = await app.content.get({
  schemaKey: 'usersFruit', // assuming schema key is this
  orderByChild: "user", // assuming your field is called 'user'
  equalTo: "mwaKRypUrNb8rJdsj9YUxw0sA892", // assuming this is your user's uid
  populate: ['fruits'] // assuming you called the select relational field 'fruits'
})
...