首页 > 解决方案 > Firestore 参考字段 - 如果没有参考,它应该不存在吗?

问题描述

我正在构建一个应用程序,其中用户有一个currentActivity引用Activity.

前任:

User
  name: My Name
  currentActivity: activities/g07JPaTfuqSXgRG7tqVs

但是,一旦用户不再执行该活动,我应该从 User 对象中删除该字段,还是有办法将其设置为 NULL?

标签: firebasegoogle-cloud-firestore

解决方案


您可以选择:

  • 完全删除该字段,或者;
  • 将该字段设置为null,或;
  • 将该字段设置为另一个值,例如空字符串。

最后两种情况比第一种情况有优势:您可以使用不等于 ( !=) 运算符查询它,以返回currentActivity字段存在且不匹配 null 或不匹配空字符串的文档(换句话说活动)。

您无法使用第一种方法(字段删除)执行相同的查询,因为您无法查询不存在的字段。

请注意,查询中关于不等于运算符的文档表明“您不能使用不等于 ( !=) 运算符,null因为x != null计算结果为undefined”,但实际上usersRef.where('currentActivity', '!=', null).get();确实可以正常工作:您获得的所有文档的 currentActivity 字段都与null.

以下其他 Firestore 文档部分中的更多详细信息:


推荐阅读