[英]How to sort Array of subdocument of a populated result in Nodejs using mongoose
I want to retrieve article submmited by member in recent order based on time. 我想检索基于时间的成员最近提交的文章。 Member Schema having array of _id of submitted article.
具有已提交文章的_id数组的成员架构。 Below are the Schema of Member and Article -
以下是成员和文章的架构-
Member Schama 沙玛会员
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const MemberSchema = new Schema({
uid:{
type:String,
required:[true,'Must Required']
},
name:{
type:String,
default:[true,'Anonymous']
},
email:{
type:String,
required:[true,'Email Must Required']
},
profileimg:{
type:String ,
required:[true,'Profile Image Must Required']
},
notes:{
type:String,
default:[true,'Write your Notes Here']
},
country:{
type:String,
default:[true,'America']
},
profession:{
type:String,
default:[true,'Developer']
},
experience:{
type:String,
default:[true,'5']
},
article:[{_id:{type : mongoose.Schema.Types.ObjectId,ref : 'Article'}}]
});
const Member = mongoose.model('member',MemberSchema);
module.exports = Member;
Article Schema 文章架构
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const ContentCardSchema = new Schema({
cardtitle : String,
cardbody : {
type:String
}
});
const ArticleSchema = new Schema({
_id:mongoose.Schema.Types.ObjectId,
author:{
type: mongoose.Schema.Types.ObjectId, ref: 'member' ,
required:[true,'UID Must Required']
},
status:{
type:String,
default:'PENDING'
},
category:{
type:String,
default:'Other'
},
title:{
type:String,
default:'Anonymous'
},
body:[ContentCardSchema],
thumbimg:{
type:String,
required:[true,'Thumb Image Must Required']
},
date: {
type: Date,
default:Date.now
}
});
const Article = mongoose.model('Article',ArticleSchema);
module.exports = Article;
Time is stored in Article Schema not in the array of Member Schema. 时间存储在文章模式中,而不存储在成员模式数组中。 I want to get output in recent article first.
我想首先在最近的文章中获得输出。
Below is Mongoose Populate Operation with sort but not working. 以下是排序的猫鼬填充操作,但不起作用。
//Get Article Submitted by their Author using uid
router.get('/author/:uid',(req,res,next)=>{
Member.findOne({uid:req.params.uid},'article').populate('article._id','title category thumbimg')
.exec()
.then((result)=>{
res.status(200).json(result);
})
.catch(err=>{
res.send(404).json({error:err});
})
});
//Get Article Submitted by their Author using uid router.get('/author/:uid',(req,res,next)=>{ Member.findOne({uid:req.params.uid},'article') .populate({path:'article._id',select: 'title category thumbimg', options: {sort : {yourfieldname :1}}) .exec() .then((result)=>{ res.status(200).json(result); }) .catch(err=>{ res.send(404).json({error:err}); }) });
Try above.Hope this helps. 尝试以上,希望这会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.