0

我正在使用带有 React Native 的 Firebase,并且刚开始使用 Flamelink 作为我的 CMS。

在使用 Flamelink 之前,我能够通过 firebase 实时数据库从登录用户那里获取特定内容,因为架构是:

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

如您所见,fruits 模式具有特定于用户的内容。

使用 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,以便我可以根据登录的用户管理内容?

4

1 回答 1

0

据我了解,您的 Fruits 集合可以链接到多个用户,主要问题是 Firebase 实时数据库不允许查询数组内的值。Cloud Firestore 在这方面要好一些。

我建议您简化查询的方法是彻底改变这种关系。我将拥有您当前拥有的 Fruits 集合,而与任何用户没有关系。然后,我将创建一个“Users Fruit”集合,该集合包含一个用户 UID 字段和一个映射到 Fruits 集合中多个条目的关系选择字段。

从您的 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'
})
于 2020-02-19T08:25:38.000 回答