当前位置: 首页 > 知识库问答 >
问题:

约会应用-我需要在Firebase Firestore中的哪种数据库结构来查询除那些不喜欢我的用户之外的所有用户?

于鹏
2023-03-14

我正在用React Native和Firebase Cloud Firestore创建一个约会应用。在我的应用程序中,用户可以不喜欢其他用户将他们排除在下一个查询之外。

我应该使用哪个数据库结构来执行Firestore查询?

当你不喜欢某人时,userID将存储在你的用户文档中的一个数组中。Firestore查询仅提供'array-contains'运算符以根据数组值进行筛选。所以我需要查询“array-not-contains”,但Firestore没有提供它。

我的Firestore数据库结构:

collection(“user”).doc(“user id”).match.dislike[dislikedUserID1,dislikedUserID2,...]

截图:Firestore数据库

共有1个答案

富凯风
2023-03-14

您说得对,where没有提供“array_does_not_contain”这样的子句。只需做一个不太合格的查询,然后从结果中减去。这可能是一个浪费的询问一个普遍不喜欢的人,但假设大多数人都是可爱的...

const adorableMe = firebase.auth().currentUser
collection('user').where(/* they might think I'm a cutie pie */).get().then(snapshot => {
    // filter result to exclude the (tiny!) set of users who don't fancy me
    return snapshot.docs.filter(doc => !doc.data().dislikes.includes(adorableMe.id))
})
 类似资料:
  • 喜欢 喜欢一个回答 取消喜欢一个回答 一个回答的喜欢列表 喜欢一个回答 POST /api/v2/question-answers/:answer/likes 响应 Header 201 Created { "message": [ "操作成功" ] } 取消喜欢一个回答 DELETE /api/v2/question-answers/:answer/likes 响应 Hea

  • 目前我有3个类,其中大多数变量是相同的。所有变量都有getter和setter。我需要根据提供的数据类型变量Year创建类的对象,并在十多个方法中传递该对象。让我们举个例子。 我们有三个班,A班,B班,C班。如果我们通过2017年,那么我需要ClassA的目标。如果我们通过2016年,那么我需要B类的目标,而对于所有其他年份,我们需要C类的目标。 然后,我们需要在所有10个方法中传递该对象。让我们

  • DBMS(数据库管理系统)主要通过数据的保存格式进行分类,现阶段主要分为以下几种类型。 层次数据库(Hierarchical Database,HDB) 层次数据库是最早研制成功的数据库系统,它把数据通过层次结构(树形结构)的方式表现出来。层次数据库曾经是数据库的主流,但随着关系数据库的出现和普及,现在已经很少使用了。 比较具有代表性的层次数据库是 IMS(Information Manageme

  • SQL查询以获得雪花帐户中可用的表的总数(包括所有数据库和架构)

  • 我正在为药房做一个应用程序,所有数据都在实时数据库上,例如:用户信息,聊天和购物车。我不小心在应用程序的主节点上导入了药物的json文件,现在我有9000个节点,我无法手动删除它们。我想删除除4个节点之外的所有节点或撤消上次操作。