7

例如,如果我的数据库是:

{
    people: name: [{"first":"Billy", "last":"smith"}]
},
{
    people: name: [{"first":"bob", "last":"smith"}]
},
{
    people: name: [{"first":"thor", "last":"smith"}]
},
{
    people: name: [{"first":"hobo", "last":"smith"}]
}

我想要一些效果:query.like("b")并让它返回第一个、第二个和第四个文档

Javascript API中有这样的东西吗?

4

1 回答 1

10

contains(key, substring)方法是您想要的方法,但请注意,这只会在第二个和第四个文档上匹配。

原因是搜索区分大小写。一种常见的策略是在 save 之前添加一个 Cloud Code 处理程序以将可搜索的内容写入另一个字段,例如:

Parse.Cloud.beforeSave("people", function(request, response) {
    request.object.set(
        "search_name", 
        request.object.get("first").toLowerCase() 
            + " " 
            + request.object.get("last").toLowerCase()
    );
    response.success();
});

现在您可以使用query.contains("search_name", searchString.toLowerCase())来找到它们。

如果您希望能够仅搜索名字而不搜索姓氏,请添加另一个字段(“search_first”),或者根据您的需要修改上述内容。

于 2013-10-08T22:39:07.750 回答