JQuery检查数组值是否在解析字段中
Parse.com JQuery check if array value is in parse field
我正在为我的网站做一个搜索框,并想从头开始构建它(我知道我可能不应该,但这是一个学习练习)。
我正在从文本框中接收字符串,并使用Jquery自动完成功能来显示Parse的任何结果。
到目前为止,这工作正常,但当我输入一个字符串,包括我的数据库中的所有单词,但不是在正确的顺序,我没有得到任何结果。
。如果我搜索"新文章",它会显示文章,而如果我搜索"新文章",它不会显示。
我正在检索数据:
...
var searchString = document.getElementById("tags").value; // Get the search string
var str = searchString.split(" "); // Split it up into an array
var Articles = Parse.Object.extend("Articles");
var query = new Parse.Query(Articles);
query.containedIn("title", str); // This part doesn't work.
// query.contains("title", searchString); // I was using this and it works OK.
query.find({
...
编辑:使用bond建议的方法下面我的云代码是:
Parse.Cloud.define('searchArticles', function(request, response) {
console.log("About to request search terms"); // This never appears in cloud code logs
var input = request.params.searchTerms;
input = _.uniq(input);
input = _.filter(list, function(w) { return w.match(/^'w+$/); });
var searchQuery = new Parse.Query("Articles");
searchQuery.containedIn("titleArray", input);
searchQuery.find().then(function(articles) {
console.log("Success");
}, function(err) {
console.log("Failure");
});
});
和我用来调用它的函数是:
$("#searchBox").keyup(function() {
var availableArticles = [];
var searchString = document.getElementById("tags").value;
var str = searchString.split(" ");
Parse.Cloud.run('searchArticles', {"searchTerms":str}, {
success: function(articles) {
alert("Successful");
},
error: function(error) {
alert("Unsuccessful");
}
});
注意,console.log中的任何一个都不会被写入,Parse.Cloud.run
函数中的警报也不会出现。
对于搜索函数,您可以使用单独的数组列,例如keyWords。在这里,您将标题列中的关键字保存在Articles类的beforeSave
函数中。然后你可以调用单独的搜索函数来搜索,而你输入搜索。像这样:
Parse.Cloud.beforeSave("Articles", function(request, response) {
// set/update Articles keywords
}
Parse.Cloud.define("searchArticles", function(request, response) {
var input = request.params.query; //
// optimizing input
input = _.uniq(input);
input = _.filter(list, function(w) { return w.match(/^'w+$/); });
var searchQuery = new Parse.Query("AddressInfo");
searchQuery.containsAll("keyWords", input);
searchQuery.find().then(function(articles) {
// return success response
}, function(err) {
// handle error
});
}
您可以从客户端呼叫searchArticles
。
containedIn
等查询比在客户端上运行查询更快。
相关文章:
- 如何使用JQuery检查输入(电子邮件)字段是否包含特殊字符
- 检查以上表格字段是否正确填写
- Jquery验证字段是否包含逗号
- jQuery - 检查输入字段是否保持不变
- 使用 jQuery 判断文件输入字段是否为空
- 如何知道字段是否由于字段级别安全性而被屏蔽
- 验证密码字段是否为空
- 检查表行的所有输入/选择字段是否都有值
- 如何检查输入字段是否已填写和单选按钮是否已选中
- 检查输入字段是否包含某些文本
- j查询如何检查字段是否为空,如果是这样,则向另一个元素添加一个类
- 在方法中动态声明新的“类字段” - 是否是好的做法
- 检查输入字段是否为空
- jQuery 验证:验证一个字段或一对的两个字段是否为必填字段
- 使用javascript检查输入字段是否为数字和长度
- 如何检查字段是否已声明
- jquery-检查表单上的字段是否为空
- 是否有任何处理程序可以检测在没有jQuery的情况下选择字段是否有任何选项
- 使用html5和javascript检查输入字段是否为空
- 正在检查标签文本,并验证与其绑定的输入字段是否至少包含x个数量的字符