0

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

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

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')。

4

1 回答 1

1

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

for(let i = 0 ; i < 50 ; i++) {
    buildfire.datastore.insert({
        name: "Address" + i
        ,address: i + " " + (i % 2 ? "Main ":"4th ") + (i % 3 ? "ave":"st" )
    },function(){});
}

然后像这样在小部件端进行搜索:

<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>

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

希望这可以帮助

于 2017-08-15T19:47:29.650 回答