解析云代码升序/ limit won'
Parse cloud code ascending / limit won't work in query in promise
在下面的云代码中,第一个查询运行良好。
在链式查询中,如果包含以下两行代码:
query.ascending("createdAt"); // NOTE
query.limit(5); // NOTE
不工作!如果把这两行代码注释掉,效果会很好。有什么问题吗?
不会抛出错误,只是根本不执行。each。如果注释掉有问题的两行代码,.each会对找到的所有结果完美地执行。
Parse.Cloud.define("someFunction", function(request, response)
{
var query = new Parse.Query("Club");
query.equalTo("objectId", request.params.club);
query.first(
{
success: function(object)
{
return object;
},
error: function(error) {...}
}).then(function(club)
{
var query = new Parse.Query("Player");
query.equalTo("club", club);
query.include("user");
query.ascending("createdAt"); // NOTE
query.limit(2); // NOTE
query.each(function(employee)
{
var teste = employee.get("email")
console.log("teste ... " + teste);
}) ...
我很惊讶它与我们的没有排序和限制条件。(我不明白你是如何把.then()
链到first()
的回调版本上的)。我认为,通过限制自己使用各种返回承诺的解析方法,可以清理代码并使其工作。
我还建议将每个逻辑块分解为小的、承诺返回的函数。与…
// return a promise fulfilled with a Club object whose id is 'clubId'
function clubWithId(clubId) {
var query = new Parse.Query("Club");
return query.get(clubId); // prettier than "objectId" equalTo and first()
}
// return a promise fulfilled with up to 'limit' Players belonging to 'club' object
function playersWithClub(club, limit) {
var query = new Parse.Query("Player");
query.equalTo("club", club);
query.include("user");
query.ascending("createdAt");
query.limit(limit);
return query.find();
}
有了这些整洁的、可测试的单独部分,我们可以更自信地构建云功能,如下所示…
// a great toolbox for dealing with collections and other stuff
var _ = require('underscore');
Parse.Cloud.define("someFunction", function(request, response) {
var clubId = request.params.club;
clubWithId(clubId).then(function(club) {
return playersWithClub(club, 2);
}).then(function(players) {
_.each(players, function(player) {
var user = player.get("user");
console.log("username is: " + user.username);
});
response.success(players);
}, function(error) {
response.error(error);
});
});
注意我们是如何从一个承诺到另一个承诺的吗?通过返回我们想要的对象作为下一个的输入。还请注意,只要我们遵循从解析返回结果的规则,该链可以在末尾有一个拒绝函数,也可以在中间有一个拒绝函数。
相关文章:
- AngularJS ng include won'不知什么原因不起作用
- 通过php添加到变量won'不起作用
- vue-js-单选按钮won't默认情况下使用v-model属性进行检查
- 在html中显示javascript变量won'不起作用
- limit jquery get text();只收集10个字符
- Javascript发布到表单-won'如果字段是隐藏的,则不起作用
- 执行加载更多函数时的LIMIT子句
- javascript for loop won't iterate
- angular won't显示范围变量(已完成)
- 如何在mongoDB中使用$limit和$sort与Q.nbind()一起使用
- Limit to HtmlPage.Window.Eval()
- 使用 limit 解析“or”查询将返回忽略单个查询限制的所有记录
- Vimeo -- rate limits header X-RateLimit-Limit -- CORS
- noUiSlider - limit values
- My localStorage.clear(); won't work
- 在使用ng repeat和limit to时,jQuery中的上下文出现错误,并从tether.js获得工具提示
- 使用jsx命令行编译器--won't编译到文件
- Zurb Foundation 4 Reveal Modal: Won't close
- 在momentJS上设置区域设置won'不起作用
- 解析云代码升序/ limit won'