FaunaDB FQL - 未找到 form/function,或参数键无效:{ params }

FaunaDB FQL - No form/function found, or invalid argument keys: { params }

我正在学习 FQL 并尝试进行批量更新,但我无法弄清楚自己做错了什么,也无法真正弄清楚错误的真正指向。

这是我的代码:

const updateResult = await serverClient.query(
    q.Map(
        guests,
        q.Lambda(
            "guest",
            q.Update(q.Var("guest").id, {
                data: {
                    emailSent: q.Var("guest").emailSent,
                    emailStatus: q.Var("guest").emailStatus,
                    emailRejectReason: q.Var("guest").emailRejectReason,
                },
            })
        )
    )
);

这是客人通过 console.log 反对的内容:

[ { email: 'myemail+bart72320@gmail.com',
emailStatus: 'sent',
emailRejectReason: null,
emailSent: true,
id: Ref(Collection("Guests"), "271884343706649107") } ]

这是与 JSON.stringify 相同的对象:

    [
  {
    "email": "myemail+bart72320@gmail.com",
    "emailStatus": "sent",
    "emailRejectReason": null,
    "emailSent": true,
    "id": {
      "@ref": {
        "id": "271884343706649107",
        "collection": {
          "@ref": {
            "id": "Guests",
            "collection": {
              "@ref": {
                "id": "collections"
              }
            }
          }
        }
      }
    }
  }
]

这是返回的部分错误:

    { [BadRequest: invalid expression]
  name: 'BadRequest',
  message: 'invalid expression',
  description:
   'No form/function found, or invalid argument keys: { params }.',
  requestResult:
   RequestResult {
     method: 'POST',
     path: '',
     query: null,
     requestRaw:
      '{"map":{"lambda":"guest","expr":{"params":{"object":{"data":{"object":{}}}}}},"collection":[{"object":{"email":"myemail+bart72320@gmail.com","emailStatus":"sent","emailRejectReason":null,"emailSent":true,"id":{"@ref":{"id":"271884343706649107","collection":{"@ref":{"id":"Guests","collection":{"@ref":{"id":"collections"}}}}}}}}]}',
     requestContent: Expr { raw: [Object] },
     responseRaw:
      '{"errors":[{"position":["map","expr"],"code":"invalid expression","description":"No form/function found, or invalid argument keys: { params }."}]}',

我已经得到了可以工作的更新和可以工作的 lambda,但不是这个,也许我只是不擅长阅读非常嵌套的、看起来很实用的错误消息。什么是表单,它是否与函数相同,或者我是否缺少键:参数?我不知道该怎么做。

请帮助我理解我做错了什么,如果这个错误消息真的有用,如何解释它,或者它是否只是一个令人困惑的包罗万象?

谢谢!

您将 Javascript 语法与 FQL 表达式混合在一起。

Var("guest")

是一个FQL表达式,但是

Var("guest").id

是 Javascript 语法。 FQL 中点运算符的等价物是

Select("id", Var("guest"))

请记住,FQL 不是在 Javascript 上执行的,而是在服务器端执行的。