带有 OR 子句的 Firestore 查询抛出错误:参数“fieldPath”的值不是有效的字段路径

问题描述 投票:0回答:1

我正在尝试使用 Firebase 节点 SDK 使用

OR
子句 执行查询。

import { and, or, where } from "firebase/firestore"
import { adminDB } from "./firebase/firebaseAdmin"

// Build the query
let q = adminDB.collection("posts")

if (condition) {
q = q.where(
      or(
        where("author.id", "==", "myId"),
        and(
          where("is_draft", "==", false),
          where("trashed_at", "==", null),
          where("is_disapproved", "==", false)
        )
      )
    )
}

const postsSnap = await q.limit(10).get()

这给了我错误

错误:参数“fieldPath”的值不是有效的字段路径。路径只能指定为字符串或通过 FieldPath 对象。

并指出

where()
块中的
if
子句是罪魁祸首。 ...但我不明白为什么。?

StackOverflow大神们,请帮助我理解我哪里出错了。谢谢!

node.js firebase google-cloud-firestore
1个回答
0
投票

菜鸟错误..我使用了错误的 JavaScript Web SDK(糟糕!)

这样修复了

import { Filter } from "firebase-admin/firestore"
import { adminDB } from "./firebase/firebaseAdmin"

// Build the query
let q = adminDB.collection("posts")

if (condition) {
q = q.where(
      Filter.or(
        Filter.where("author.id", "==", "myId"),
        Filter.and(
          Filter.where("is_draft", "==", false),
          Filter.where("trashed_at", "==", null),
          Filter.where("is_disapproved", "==", false)
        )
      )
    )
}

const postsSnap = await q.limit(10).get()
© www.soinside.com 2019 - 2024. All rights reserved.