Buildfire - 在搜索中使用正则表达式

时间:2017-08-14 22:36:35

标签: buildfire

我一直在查看文档,但我似乎无法弄清楚如何为 buildfire.datastore.search 查询正确创建过滤器对象。< / p>

我的对象上有地址属性,我希望能够键入部分地址并让它返回。以下是我尝试传递给搜索查询的过滤器对象:

search = {filter: {"$json.address": {"$regex": `/${this.state.search}/`}}};

search = {filter: {'$regex': {'$json.address': this.state.search}}};

两者都没有奏效。最终目标是:

buildfire.datastore.search(search, 'location', cb);

修改

我甚至试图在文档中对正则表达式进行硬编码:

"$or" : [
  {"description": {"$regex":"/new /"}}
]

并且它不起作用(我用我知道会显示的字符串替换'new'。)

1 个答案:

答案 0 :(得分:1)

我刚在控制端插入以下内容:

<body>
<input type="text" id="criteria" /><button onclick="search()">Search</button>
<div id="results"></div>
<script>
    function search(){
        var cri = document.getElementById("criteria").value;

        buildfire.datastore.search( {filter:{"$json.name": {"$regex": cri  }  } } , function(err,results){
            document.getElementById("results").innerHTML = JSON.stringify(results);
        });
    }
</script>
</body>

然后在小部件方面进行搜索:

file = fopen('file.txt');
out = textscan(file, '%s', 'Delimiter', '\n');
parsed = cellfun(@(x) textscan(x, '/%c/%s %d'), out{1}, 'uniformoutput', false);
parsed = cellfun(@(x) x{2}, parsed, 'uniformoutput', false);
fclose(file);

工作正常。如果您希望搜索更复杂,那么您需要修改正则表达式语句,例如不区分大小写。

希望这有帮助