gpt4 book ai didi

javascript - Parse.com JQuery 检查数组值是否在解析字段中

转载 作者:行者123 更新时间:2023-12-03 10:03:32 25 4
gpt4 key购买 nike

我正在为我的网站开发一个搜索框,并希望从头开始构建(我知道我可能不应该这样做,但这也是一个学习练习)。

我从文本框中接收一个字符串,并使用 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 函数中的警报永远不会出现。云代码正在运行,如 Parse 云代码日志中显示的那样。

最佳答案

对于搜索功能,您可以使用单独的数组列,例如关键字。在 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 等查询比在客户端上运行查询会更快地给出搜索结果。

关于javascript - Parse.com JQuery 检查数组值是否在解析字段中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30473937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com