例如,如果我的数据库是:
{
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中是否有这样的内容?
答案 0 :(得分:9)
contains(key, substring)
方法是您想要的方法,但请注意,这只会在第二个和第四个文档上匹配。
原因是搜索区分大小写。一种常见的策略是添加一个Cloud Code处理程序,将可搜索的内容写入另一个字段before save,例如:
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”),或者根据需要修改上述字段。