首页 > 解决方案 > 在sails.js中通过积分和注册日期获取用户排名

问题描述

如何使用积分和注册时间获得用户排名?我试图通过相同的标准来吸引用户,并且效果很好。

  await User.find({
      sort: {
          rewardPoints: 0,
          createdAt: 1
      }   
  }).limit(limit);

现在我只想获得我的排名,但这段代码并没有给我正确的结果

 await User.count({ 
     createdAt: { "<" : user.createdAt },
     rewardPoints: { ">=": user.rewardPoints },
  });

标签: node.jssails.jswaterline

解决方案


我终于使用 sql 查询做到了:

SELECT id
          , firstName
          , rank
          FROM ( 
            SELECT 
            *
            , (@rank := @rank + 1) AS rank
            FROM 
            user
            CROSS JOIN( 
            SELECT
              @rank := 0
            )  
            AS 
              init_var_var
            ORDER BY
            user.rewardPoints DESC,
            user.createdAt ASC    
            )
          AS logins_ordered_ranked
          WHERE
            id = "${user.id}"

推荐阅读