Firestore的PHP SDK中缺乏零不等式支持



我们可以在JavaScript SDK(客户端或管理员(上很好地运行null不等式,但我们不能在PHP中运行?对我来说,这似乎是Firestore已经支持的后端功能,但在PHP中引发了一个错误。

->where('preorders', '!=', null)

Uncaught InvalidArgumentException: Null and NaN are allowed only with operator EQUALS.

而JS SDK中的等效程序运行得很好。

query(q, where('preorders', '!=', null))

既然我不能在这里打开谷歌的PHP SDK回购中的问题,我们有什么办法可以找到为什么这不可能的原因吗?

文档中写道:

当字段设置为任何值时,它都存在,包括空的string (" ")nullNaN(不是数字(。请注意,空字段值与!=子句不匹配,因为x != null的计算结果为未定义。

解释:是的,即使我们添加了空字符串、null(Firestore中支持的数据类型(或NaN,也不意味着该字段不存在。它确实存在并持有其中一种价值观。当我们比较where子句中的x != null时,x != null的计算结果是未定义的,但对于不存在的字段。根据Firestore支持的数据类型,未定义的数据类型在Firestore中不受支持
因此,我们可以比较.where(x!=null),它是受支持的,但对于不存在的字段,它的计算结果为未定义。

正如在类似的线程中所提到的,Firestore JS SDK中的版本7.21.0支持版本7.21.0中带有where子句的!=运算符
但在深入研究文档时,我发现php5支持!=运算符,正如您在代码片段中看到的那样,但是php8还不支持CCD_ 15运算符,解决方法是使用CCD_
也许您正在尝试使用php版本>5,从而产生误差。在GitHub中已经有一个悬而未决的问题。您可以按照链接进行更新和更改,也可以在此处创建新的请求。

最新更新