如何使用解析 PFQuery 链接约束
How to chain constraint with parse PFQuery
解析 PFQuery 的链接约束有问题。
我想要什么:
我想获取按发布日期排序的 50 公里左右的所有照片。最新的第一。 (orderByDescending("createdAt")
如果我不设置位置限制,一切正常,因为我所有的照片都按日期排序。
当我为位置输入 whereKey 时,结果仍然是有序的,但由于某种原因,我无法获得所有照片,有些照片被跳过,当我刷新时,我永远不会得到相同的结果...
这是我的代码:
var findPosts:PFQuery = PFQuery(className: "UserPost")
findPosts.whereKey("location", nearGeoPoint: location, withinKilometers: 50)
findPosts.orderByDescending("createdAt")
findPosts.limit = 10
findPosts.skip = timeLineData.count
好的,根据你最后的评论,我认为你将不得不创建一个云代码函数来执行此操作。
您需要将其写入 Javascript。该网站有大量关于如何创建它的文档。
您可以创建一个名为 nearestPosts
的函数,然后使用 skip
和 limit
以及 location
.
这样的参数
除了现在,您可以自己构建逻辑,而不是依赖 PFQuery
为您做所有事情。
所以你可以做类似...
- 获取该位置 50 公里范围内的所有帖子。
- 按
createdAt
的顺序对帖子进行排序。
- 取
skip
之后开始的前 limit
个帖子。
- Return 这些帖子在一个数组中。
本质上就是做你想做的,但你必须手动做。
然后在 iOS 你可以做一些像...
[PFCloud callFunctionInBackground:@"nearestPosts"
withParameters:@{@"limit" : @10, @"skip" : @20, @"location" : geoPoint}
block:^(NSArray *posts, NSError *error) {
if (!error) {
// posts array contains the posts you need
}
}];
上有很多关于如何使用 Javascript 进行操作的文档
你的 Javascript 会是这样的...
Parse.Cloud.define("nearestPosts", function(request, response) {
var location = request.params["location"];
getNearestPosts(location).then(function(posts) {
response.success(posts);
}, function(error) {
response.error(error);
});
});
function getNearestPosts(location) {
var promise = new Parse.Promise();
var query = new Parse.Query("UserPost");
query.withinMiles("location", location, 50);
query.find().then( function(results) {
promise.resolve(results);
}, function(error) {
promise.reject(error);
});
return promise;
}
这将获取 50 英里范围内的所有帖子。这只是如何使这一切正常工作的开始。
希望对您有所帮助。
解析 PFQuery 的链接约束有问题。
我想要什么:
我想获取按发布日期排序的 50 公里左右的所有照片。最新的第一。 (orderByDescending("createdAt")
如果我不设置位置限制,一切正常,因为我所有的照片都按日期排序。
当我为位置输入 whereKey 时,结果仍然是有序的,但由于某种原因,我无法获得所有照片,有些照片被跳过,当我刷新时,我永远不会得到相同的结果...
这是我的代码:
var findPosts:PFQuery = PFQuery(className: "UserPost")
findPosts.whereKey("location", nearGeoPoint: location, withinKilometers: 50)
findPosts.orderByDescending("createdAt")
findPosts.limit = 10
findPosts.skip = timeLineData.count
好的,根据你最后的评论,我认为你将不得不创建一个云代码函数来执行此操作。
您需要将其写入 Javascript。该网站有大量关于如何创建它的文档。
您可以创建一个名为 nearestPosts
的函数,然后使用 skip
和 limit
以及 location
.
除了现在,您可以自己构建逻辑,而不是依赖 PFQuery
为您做所有事情。
所以你可以做类似...
- 获取该位置 50 公里范围内的所有帖子。
- 按
createdAt
的顺序对帖子进行排序。 - 取
skip
之后开始的前limit
个帖子。 - Return 这些帖子在一个数组中。
本质上就是做你想做的,但你必须手动做。
然后在 iOS 你可以做一些像...
[PFCloud callFunctionInBackground:@"nearestPosts"
withParameters:@{@"limit" : @10, @"skip" : @20, @"location" : geoPoint}
block:^(NSArray *posts, NSError *error) {
if (!error) {
// posts array contains the posts you need
}
}];
上有很多关于如何使用 Javascript 进行操作的文档
你的 Javascript 会是这样的...
Parse.Cloud.define("nearestPosts", function(request, response) {
var location = request.params["location"];
getNearestPosts(location).then(function(posts) {
response.success(posts);
}, function(error) {
response.error(error);
});
});
function getNearestPosts(location) {
var promise = new Parse.Promise();
var query = new Parse.Query("UserPost");
query.withinMiles("location", location, 50);
query.find().then( function(results) {
promise.resolve(results);
}, function(error) {
promise.reject(error);
});
return promise;
}
这将获取 50 英里范围内的所有帖子。这只是如何使这一切正常工作的开始。
希望对您有所帮助。