Parse platform 使用ParseQuery获取从列表中找到的第一项

Parse platform 使用ParseQuery获取从列表中找到的第一项,parse-platform,Parse Platform,我想查询Parse,以便按照给定列表的顺序检索在给定列表中找到的第一个对象 我的代码看起来很像这样: query = getQuery(MyClass.class).whereContainedIn("FieldName", itemList); networkQuery.getFirstInBackground(...); 具体来说,我需要的是检索列表中找到的第一项,这意味着如果我按升序向它提供一个数字列表,我希望检索与可能的最小数字对应的对象 我不确定这就是getFirstInBackgr

我想查询Parse,以便按照给定列表的顺序检索在给定列表中找到的第一个对象

我的代码看起来很像这样:

query = getQuery(MyClass.class).whereContainedIn("FieldName", itemList);
networkQuery.getFirstInBackground(...);
具体来说,我需要的是检索列表中找到的第一项,这意味着如果我按升序向它提供一个数字列表,我希望检索与可能的最小数字对应的对象


我不确定这就是
getFirstInBackground()
的工作原理,我知道它只会获取一个结果,但是我如何确保搜索是按照我作为参数提供的列表的顺序进行的呢?

自己在
itemList
中查找最小值,并使用equalTo对查询进行限定

// is this javascript?  if so, underscorejs is very useful
var _ = require('underscore');

var minItem = _.min(itemList);  // you can add an optional iteratee function that can minimize any computation over the list

query.equalTo("FieldName", minItem);
query.getFirstInBackground(...);
编辑 查询顺序仅适用于可排序类型,如字符串和数字。问题中希望的排序是数组属性的min()值。如果这样的东西可用,那么getFirst查询就可以工作了

您仍然可以使用
find()
完成所需的操作。由于一小部分行将在itemList中包含FieldName值,您只需执行一个find()并从这些结果中选择最小值即可

query.find().then(function(results) {
    return _.min(results, function(result) {
        return result.get("FieldName");
    });
});

您必须使用-
orderByAscending
(或Descending,我不记得了)方法对查询进行排序。它接受column name参数

因此,一些简单易懂的方法(但我相信您已经理解)是按“年龄”升序排序(例如),数组中的第一个结果将是最小年龄

查询排序后,只需为其设置一个
-limit
。这是查询将返回的结果数,如果您只想要五个第一,请将限制设置为5。或者20。最大值为1000

如果您还想跳过前3个结果,因为您知道它们不有趣(我只是在这里详细说明您的问题范围之外),您可以使用-
skip
方法跳过前X个结果

这应该可以帮助您构建查询。设置所有这些参数,然后执行查询,就会得到正确的结果


编辑:重读你的问题后,我不确定我是否回答了你的问题。如果我不是,请详细说明。

我不是这个意思。我给出了一个大约50个搜索值的列表,数据库中通常存在0-2个匹配它们的对象。我希望找到与列表中可能的最小值对应的对象,但它也可能是我看到的第40个搜索值。好的,请看编辑。查询顺序非常简单。。。与应用于数组列的函数不同。但是在查询之后,您仍然可以通过少量计算得到所需内容。@mittelmania-编辑是否足够清晰?Parse.Query上的排序方法无法应用于数组列。唯一的替代方法是使用containedIn约束缩小匹配行的范围,取回所有匹配项,并在代码中选择最小的一个。我认为这并没有完全解决问题。OP希望根据数组属性的最小匹配对查询进行排序。订购人。。。方法仅对可排序类型而不是数组进行操作。