我很难用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"}"
所以这是在进行“OR”查找。
如何构造此请求以便执行“AND”查找。在我的第二个例子的情况下,查询应该不返回任何记录,因为我的表中的每个记录都有一个uniqueID
?
更新后的答案:
在我的分析中,似乎我的问题中的第二个查询只是一个AND,对于任何包含字面意义的唯一ID,我猜Filemaker以某种方式解释为对任何记录都是真的。
对于来自MySQL的人来说,这是非常令人困惑的行为。在查看Filemaker API文档和示例时,文档虽然将此作为FileMaker的全局属性进行演示,但并不明显。
你正在做一个“AND”发现。如果某个字段在查找中为空,则不会搜索该字段。在您的计数器示例中,您只使用anotherField搜索字段:1。如果要搜索空字段,请使用“=”,因为它只会找到空字。
没有足够的评论,但你的回答是:
对于Filemaker在uniqueID上查找,您需要使用“==”。 “=”会给你一个单词匹配,而“==”会给你一个精确的值匹配。见https://fmhelp.filemaker.com/help/12/fmp/en/html/find_sort.5.6.html
同意: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"}
]}
我知道我刚刚问过这个问题,但是它有记录,因为Filemaker API文档非常粗制滥造。
"{"query":[{
"uniqueID":"=fooBar",
"anotherField":1
}],"limit":"1"}"
这将返回我寻求的记录。
加上=
==
可以防止假阳性,尽管有不同的方式。
- 更新以反映Rushfire答案中的细粒度细节。