Parse platform 如何从Parse.com集合中查找随机对象

Parse platform 如何从Parse.com集合中查找随机对象,parse-platform,Parse Platform,在缺少Parse.Query.random()的情况下,理想情况下,我希望执行以下操作: query.count.then(function(theCount){ return query.skip(randomNumber%theCount).first(); }).then(function(aRandomObjectConformingToQuery){ // Do stuff to the random object. }); 但不鼓励计数操作,对于大型查询,计数操作将无

在缺少Parse.Query.random()的情况下,理想情况下,我希望执行以下操作:

query.count.then(function(theCount){
    return query.skip(randomNumber%theCount).first();
}).then(function(aRandomObjectConformingToQuery){
   // Do stuff to the random object.
});
但不鼓励计数操作,对于大型查询,计数操作将无法完成


是否有任何方法可以从表的子集中获取随机对象。e、 g.“给我找一个叫罗杰的用户,这样我就可以给他一个奖了”因为这个奖,first()对我不起作用。

所以没有
query.random()
,尽管Parse已经将此添加到他们的积压工作中

同时,有两种方法可以获得随机对象:

  • 维护对象的计数并设置
    查询。跳过
    为随机数[0,计数]
  • 运行查询以检索所有对象(这可能不可能),然后从数组中随机选择一个对象

  • 2不太容易出错,因为在解析中维护对象计数是不可靠的,但它不是真正随机的。在我的例子中,它仍然有效。

    这是在解析中从给定类获取随机对象的工作代码

    在云代码中

    Parse.Cloud.define("get10Obj",function(request,response)
    { 
    
    query = new Parse.Query(request.params.movie);
    
    Array.prototype.randomElement = function (min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    
    
    query.find ({
    
    success: function(results) {
    
            var final10 = [];
    
            for (var i = 0; i < 5; i++) {
                var myRandomElement = results.randomElement(0,results.length);
    
                if (final10.indexOf(myRandomElement) == -1) {
                    final10.push(myRandomElement);
                } else {
                    i--;
                }
            }
             var datalist =[];
    
            for(var j=0;j<final10.length;j++)
            {
                var index= final10[j];
                datalist.push(results[index]);
            }   
    
            response.success(datalist);
        },
        error: function() {
            response.error(error);
          }
        });
      });
    
    Parse.Cloud.define(“get10Obj”),函数(请求、响应)
    { 
    query=新建Parse.query(request.params.movie);
    Array.prototype.randomElement=函数(最小值、最大值){
    返回Math.floor(Math.random()*(max-min+1))+min;
    }
    查询.查找({
    成功:功能(结果){
    var final10=[];
    对于(变量i=0;i<5;i++){
    var myRandomElement=results.randomElement(0,results.length);
    if(final10.indexOf(myRandomElement)=-1){
    最后10.推送(myRandomElement);
    }否则{
    我--;
    }
    }
    var datalist=[];
    
    对于(var j=0;j)如果我需要查询一个大于1的随机对象怎么办?您的示例仅针对一个随机对象。如果您想从随机索引中获取n个对象,请将query.limit设置为n如果您想要n个随机对象,则需要执行我描述的n次操作。
        HashMap<String, Object> params = new HashMap<String, Object>();
        params.put("movie", "The Matrix");
    
        ParseCloud.callFunctionInBackground("averageStars", params, new
           FunctionCallback<ParseObject>() {
          void done(ParseObject ratings, ParseException e) {
           if (e == null) {
              // Do your stuff
              }
          }
       });