Filemaker 17 API“ AND”查询

时间:2019-03-05 22:37:05

标签: curl filemaker

我很难用FileMaker 17 API编写“ AND”查询。

参考: https://fmhelp.filemaker.com/docs/17/en/dataapi/index.html#perform-a-find-request

这正在传递到CURLOPT_POSTFIELDS。

"{"query":[{
    "uniqueID":"fooBar",
    "anotherField":1
}],"limit":"1"}"

我想发生的事情是,我检索到1条记录,其中uniqueID是“ fooBar”而anotherField是1。

但是,如果通过,我会得到相同的记录:

"{"query":[{
    "uniqueID":"",
    "anotherField":1
}],"limit":"1"}"

因此,这正在执行“或”查找。

如何构造此请求,以便它执行“ AND”查找。在第二个示例中,查询应该不返回任何记录,因为表中的每个记录都有一个uniqueID

更新后的答案:

在我的分析中,似乎我问题中的第二个查询只是对任何包含 nothing 的uniqueID的AND,我猜Filemaker某种程度上将其解释为对任何记录都是正确的。

对于来自MySQL的人来说,这是非常令人困惑的行为。并且,在将其作为FileMaker的全局属性来演示时,该文档在查看Filemaker API文档和示例时并不明显。

3 个答案:

答案 0 :(得分:1)

您正在执行“与”查找。如果查找中的字段为空,则将不会对其进行搜索。在您的反例中,您仅搜索具有anotherField:1的字段。如果要在空字段中搜索,请使用“ =”,因为它只会找到空词。

没有足够的代表发表评论,但您之前的回答是:

对于Filemaker在唯一ID上找到您想使用“ ==”。 “ =”将为您提供单词匹配,而“ ==“将为您提供精确的值匹配。参见https://fmhelp.filemaker.com/help/12/fmp/en/html/find_sort.5.6.html

答案 1 :(得分:1)

同意关于:Data API文档。需要澄清的是,对于以后可能会访问此主题的人们:

// this AND that, array with single predicate object

{"query": [{
  "this": "foo",
  "that": "bar"
}]}


// this OR that, array with multiple predicate objects

{"query": [
  {"this": "foo"},
  {"that": "bar"}
]}

答案 2 :(得分:0)

我知道我刚才问过这个问题,但是它有记录,因为Filemaker API文档很伪劣。

"{"query":[{
    "uniqueID":"=fooBar",
    "anotherField":1
}],"limit":"1"}"

这将返回我寻求的记录。

添加= ==可以防止误报,尽管以不同的方式。

-已更新,以反映Rushfire答案中的细粒度细节。