按照关系字段的计数对KeystoneJS结果进行排序
创始人
2024-08-24 04:30:01
0

在KeystoneJS中,可以使用.populate()方法来按照关系字段的计数对结果进行排序。下面是一个示例代码:

const keystone = require('keystone');
const { Types } = keystone.Field;

// 定义模型
const Post = keystone.List('Post', {
    map: { name: 'title' },
    autokey: { path: 'slug', from: 'title', unique: true },
});

const Comment = keystone.List('Comment', {
    map: { name: 'content' },
});

Post.add({
    title: { type: Types.Text, required: true },
    commentsCount: { type: Types.Number, default: 0, noedit: true },
});

Comment.add({
    content: { type: Types.Text, required: true },
    post: { type: Types.Relationship, ref: 'Post', refPath: 'comments' },
});

// 在模型上注册一个中间件,用于更新评论计数字段
Comment.schema.post('save', async function () {
    const postId = this.post;
    const count = await Comment.model.countDocuments({ post: postId });
    await Post.model.findByIdAndUpdate(postId, { commentsCount: count });
});

// 查询帖子,并按照评论计数字段降序排序
Post.model.find()
    .populate('comments')
    .sort('-commentsCount')
    .exec((err, posts) => {
        if (err) {
            console.error(err);
        } else {
            console.log(posts);
        }
    });

在这个示例中,我们有两个模型:PostCommentPost模型有一个commentsCount字段,用于存储与该帖子相关联的评论计数。Comment模型有一个post字段,用于关联到Post模型。

Comment模型的schema中,我们注册了一个post('save')中间件,用于在每次保存评论时更新对应帖子的评论计数字段。这样,无论是添加、更新还是删除评论,都能保持评论计数字段的准确性。

最后,我们使用Post.model.find().populate('comments').sort('-commentsCount')查询帖子,并根据评论计数字段进行降序排序。这将返回一个按照评论计数排序的帖子数组。

相关内容

热门资讯

推荐攻略!菠萝辅助破解版,广西... 推荐攻略!菠萝辅助破解版,广西友乐辅助器,详细工具(的确有挂)小薇(辅助器软件下载)致您一封信;亲爱...
玩家必看科普!决战卡五星作弊,... 玩家必看科普!决战卡五星作弊,新518互游插件,详细教程(有挂技巧)1、游戏颠覆性的策略玩法,独创攻...
实测发现!吉安中至小程序,八闽... 实测发现!吉安中至小程序,八闽福建辅助,详细教程(真的有挂)吉安中至小程序辅助器是一种具有地方特色的...
今日焦点!广东闲来app辅助,... 今日焦点!广东闲来app辅助,家乡大二有技巧没有,详细工具(有挂细节)1、下载好家乡大二有技巧没有正...
玩家实测!湖北卡五星如啊你就按... 玩家实测!湖北卡五星如啊你就按,潮友会app下载官方辅助器,详细神器(有挂技术)1)潮友会app下载...
免费测试版!宝宝浙江辅助脚本,... 免费测试版!宝宝浙江辅助脚本,微乐四川小程序修改器,详细攻略(有挂技术)微乐四川小程序修改器透视方法...
总算清楚!创思维透视辅助器,哈... 总算清楚!创思维透视辅助器,哈局13张辅助器,详细器(有挂技术)1、首先打开创思维透视辅助器辅助器下...
专业讨论!同城游辅助器软件下载... 专业讨论!同城游辅助器软件下载,广东雀神辅助器透视,详细脚本(有挂攻略)一、同城游辅助器软件下载可以...
今日科普!潮汕汇游戏辅助,随意... 今日科普!潮汕汇游戏辅助,随意玩正版房卡有开挂,详细方法(有挂规律)随意玩正版房卡有开挂辅助器是一种...
重大通报!超级三加一辅助,欢乐... 重大通报!超级三加一辅助,欢乐情怀辅助挂,详细插件(有挂讲解)1、进入游戏-大厅左侧-新手福利-激活...