我的Parse数据库中有Inventory表,有两个相关字段:productId和quantity。收到货件时,会创建一个包含productId和quantity的记录。类似地,当发生销售时,使用productId和数量进行库存记录(这将是负数,因为库存将在销售后减少)。
我想在Inventory表上使用/ sum聚合查询运行一个分组,其中Parse Cloud Code输出一个包含唯一productIds作为键的字典,以及那些ID作为值的数量列的总和。
我看过一些旧帖子说Parse没有这样做,但是最近的帖子引用了Cloud Code,例如Cloud Code Guide中的averageStart:https://parse.com/docs/cloud_code_guide
但是,似乎averageStars中使用的Parse.Query最多限制为1000条记录。因此,当我对数量列求和时,我只在1000条记录而不是整个表格上这样做。有没有办法可以在库存表中的所有记录中按/计算组?
例如:
广告资源表
productId数量
记录1:AAAAA 50
记录2:BBBBB 40
记录3:AAAAA -5
记录4:BBBBB -2
记录5:AAAAA 10
记录6:AAAAA-7
输出字典: {AAAAA:48,BBBBB:38}
答案 0 :(得分:4)
您可以使用Parse.Query.each()
。它没有限制。如果你的班级有太多的条目,它会超时。
请参阅docs
e.g:
var totalQuantity = 0;
var inventoryQuery = new Parse.Query("Inventory");
inventoryQuery.each(
function(result){
totalQuantity += result.get("quantity");
}, {
success: function() {
// looped through everything
},
error: function(error) {
// error is an instance of Parse.Error.
}
});
});
如果超时,则必须构建类似this的内容。
答案 1 :(得分:3)
如果您想查看带有字典的代码:
Parse.Cloud.define("retrieveInventory", function(request, response) {
var productDictionary ={};
var query = new Parse.Query("Inventory");
query.equalTo("personId", request.params.personId);
query.each(
function(result){
var num = result.get("quantity");
if(result.get("productId") in productDictionary){
productDictionary[result.get("productId")] += num;
}
else{
productDictionary[result.get("productId")] = num;
}
}, {
success: function() {
response.success(productDictionary);
},
error: function(error) {
response.error("Query failed. Error = " + error.message);
}
});
});