我很难用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文档和示例时并不明显。
答案 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答案中的细粒度细节。