使用 Promises 解析云代码的多个查询
Multiple Queries with Parse Cloud Code Using Promises
我有两个问题:
- 以下示例是否是在单个 Cloud Code 函数中执行多个 Parse 查询的正确方法?
- 下面的示例是否会提供我使用 一个 HTTP 请求(当我调用
logbookEntries
时)查询的所有数据,然后算作 两个 我的帐户上的解析请求,因为它是两个解析查询?
代码如下:
Parse.Cloud.define("logbookEntries", function(request, response) {
//::: Query 1 :::
var firstQuery = new Parse.Query("Logbook");
var returnData = [];
firstQuery.find().then(function(firstResults) {
returnData[0] = firstResults;
}).then(function(result) {
//::: Query 2 :::
var secondQuery = new Parse.Query("Logbook");
secondQuery.find().then(function(secondResults))
returnData[1] = secondResults;
}).then(function(result) {
response.success(returnData);
}, function(error) {
response.error(error);
});
});
提前致谢。
- 这是一种方式,虽然不太正确。
- 是
你的代码应该是:
Parse.Cloud.define("logbookEntries", function(request, response) {
//::: Query 1 :::
var firstQuery = new Parse.Query("Logbook");
var returnData = [];
firstQuery.find().then(function(firstResults) {
returnData[0] = firstResults;
var secondQuery = new Parse.Query("Logbook");
return secondQuery.find();
}).then(function(result) {
returnData[1] = result;
response.success(returnData);
}, function(error) {
response.error(error);
});
});
或者,更好的结构方式是:
Parse.Cloud.define("logbookEntries", function(request, response) {
var firstQuery = new Parse.Query("Logbook");
var secondQuery = new Parse.Query("Logbook");
var promises = [];
promises.push(firstQuery.find());
promises.push(secondQuery.find());
Parse.Promise.when(promises).then(function(result1, result2) {
var returnData = [];
returnData[1] = result1;
returnData[2] = result2;
response.success(returnData);
}, function(error) {
response.error(error);
});
}
只是为了更新 Wain 的结构化代码:
Promise.when returns 数组,当提供一个数组时,所以正确的代码是
Parse.Promise.when(promises).then(function([result1, result2]) {
并且由于不需要重新打包数组,它只是
Parse.Promise.when(promises).then(function(result) {
response.success(result);
See here 了解更多信息。
我有两个问题:
- 以下示例是否是在单个 Cloud Code 函数中执行多个 Parse 查询的正确方法?
- 下面的示例是否会提供我使用 一个 HTTP 请求(当我调用
logbookEntries
时)查询的所有数据,然后算作 两个 我的帐户上的解析请求,因为它是两个解析查询?
代码如下:
Parse.Cloud.define("logbookEntries", function(request, response) {
//::: Query 1 :::
var firstQuery = new Parse.Query("Logbook");
var returnData = [];
firstQuery.find().then(function(firstResults) {
returnData[0] = firstResults;
}).then(function(result) {
//::: Query 2 :::
var secondQuery = new Parse.Query("Logbook");
secondQuery.find().then(function(secondResults))
returnData[1] = secondResults;
}).then(function(result) {
response.success(returnData);
}, function(error) {
response.error(error);
});
});
提前致谢。
- 这是一种方式,虽然不太正确。
- 是
你的代码应该是:
Parse.Cloud.define("logbookEntries", function(request, response) {
//::: Query 1 :::
var firstQuery = new Parse.Query("Logbook");
var returnData = [];
firstQuery.find().then(function(firstResults) {
returnData[0] = firstResults;
var secondQuery = new Parse.Query("Logbook");
return secondQuery.find();
}).then(function(result) {
returnData[1] = result;
response.success(returnData);
}, function(error) {
response.error(error);
});
});
或者,更好的结构方式是:
Parse.Cloud.define("logbookEntries", function(request, response) {
var firstQuery = new Parse.Query("Logbook");
var secondQuery = new Parse.Query("Logbook");
var promises = [];
promises.push(firstQuery.find());
promises.push(secondQuery.find());
Parse.Promise.when(promises).then(function(result1, result2) {
var returnData = [];
returnData[1] = result1;
returnData[2] = result2;
response.success(returnData);
}, function(error) {
response.error(error);
});
}
只是为了更新 Wain 的结构化代码: Promise.when returns 数组,当提供一个数组时,所以正确的代码是
Parse.Promise.when(promises).then(function([result1, result2]) {
并且由于不需要重新打包数组,它只是
Parse.Promise.when(promises).then(function(result) {
response.success(result);
See here 了解更多信息。