【发布时间】:2016-08-07 06:00:09
【问题描述】:
我正在使用 angularjs 和 parse.com 来查询三个成员 spotlight = true。
当我第一次使用时,它会找到一个,但是当我将 find 与 limit(3) 一起使用时,它什么也找不到。我什至删除了Limit(3),但仍然没有。我已经搜索了互联网,在尝试了一些东西后我发现结果仍然是零。
app.controller('spotlightCtrl', function($scope, $q) {
$scope.sl = {};
$scope.slmemid = "";
Parse.initialize("xxx", "xxx");
Parse.serverURL = 'https://parseapi.back4app.com';
var ArticleDfd = $q.defer();
var members = Parse.Object.extend('members');
var query = new Parse.Query(members);
query.equalTo("spotlight", true);
query.first().then(function (data) {
//query.find().then(function (data) { -----this find does not return results.
ArticleDfd.resolve(data);
}, function (error) {
ArticleDfd.reject(data);
console.log(error);
});
ArticleDfd.promise
.then(function (article) {
$scope.sl = article.attributes;
$scope.slmemid = article.id;
console.log(article);
})
.catch(function (error) {
//do something with the error
console.log(error);
});
});
仍在寻找正确的方法。 我找到了解决办法。我使用 skip() 函数并制作了三个控制器。
app.controller('spotlightCtrl1', function($scope, $q) {.....
.....
query.equalTo("spotlight", true);
query.first().then(function (data) {
app.controller('spotlightCtrl2', function($scope, $q) {......
.....
query.equalTo("spotlight", true).skip(1);
query.first().then(function (data) {...
app.controller('spotlightCtrl3', function($scope, $q) {......
.....
query.equalTo("spotlight", true).skip(2);
query.first().then(function (data) {....
我认为这会慢一些。还想知道正确的代码吗??
【问题讨论】:
-
我没有看到您的查询有任何问题...如果您删除 equalTo 条件,您会得到结果吗?
-
这就是我的想法,删除 equalTo 会给我同样的结果。我首先得到结果,而查找没有结果?还有其他想法吗?
-
我不知道 angularjs 但 first 返回一个 Parse Object 但 find 返回解析对象列表(数组 - [数据])...您收到一些错误或什么都没有返回?
-
我还要说,尝试记录捕获错误。旁注,不需要 ArticleDfd defer 的包装,只需执行:
ArticleDfd = query.first/query.find -
find() 不起作用和 first() 起作用的唯一原因是错误。我想这可能是因为您收藏中的一条记录已损坏。您能否尝试运行 find() 查询并将错误日志(如果您遇到错误)添加到问题中?
标签: javascript angularjs parse-platform back4app