我的解析云代码中有一个小的afterSave触发器。触发器只会重新计算标记为deleted = false的项目。
当我更新我的对象时,计数正常,除非我更新已删除的标志。似乎计数正在考虑保存事件之前的对象,这不是我期望的" afterSave"触发。
另一方面,通过使用"发现"而不是"计数"在同一个查询中,我将始终获得正确数量的对象。当然"发现"当查询保持在1000个以下的对象时,方式将会发生。
我的代码中有什么问题吗?这是预期的行为吗?这是一个错误吗?有没有其他方法以正确的方式计算对象?
非常感谢你的关注
Parse.Cloud.afterSave("BranchLike", function(request) {
console.log("Managing branchLike after save...");
Parse.Cloud.useMasterKey();
var branch = request.object.get("branch");
var branchLikeClass = Parse.Object.extend("BranchLike");
var type = request.object.get("type");
var branchLikeQuery = new Parse.Query(branchLikeClass);
branchLikeQuery.equalTo("branch",branch);
branchLikeQuery.equalTo("deleted",false);
branchLikeQuery.equalTo("type",type);
branchLikeQuery.count({
success: function(count) {
console.log("count = "+count); //works fine except on "delete" flag updates
/* ... */
},
error: function(error) {
/* ... */
}
});
branchLikeQuery.find({
success: function(branchLikes) {
console.log("ALTERNATIVE COUNT = "+branchLikes.length); //works fine when having less than 1000 objects
},
error: function(error) {
/* ... */
}
});
});