我正在做一个社会媒体和我有一个问题与2模式。用户和追随者。当一个用户追随另一个,一个新的文档被添加到追随者方法与谁dollows谁的信息。在文档被创建后,一个后挂钩运行一个静态函数与agregattion管道,计算追随者的追随者的追随者和追随者的追随者,并在修改它,直到它的权利,但当我试图做同样的用户unfollow其他,这个职位挂钩不正确的工作。
使用聚合管道的followerschema.statics函数:
followersschema.statics.AdjustFollowersFollowing = async function(FOLLOWEDID,FOLLOWINGID){
try{const statsfollowedid = await this.aggregate([{ //THIS AGREGATION PIPELINE GETS THE EXACT NUMBER OF FOLLOWERS THAT THE FOLLOWED USER HAS
$match: { followedid : FOLLOWEDID}
},{
$group: {
_id: FOLLOWEDID,
numFollowed: {$sum:1}
}
}]);
const statsfollowingid = await this.aggregate([{//THIS AGREGGATION PIPELINE GETS THE EXACT NUMBER OF PERSON THAT FOLLOWS THE FOLLOWING USER
$match: { followingid : FOLLOWINGID}
},{
$group: {
_id: FOLLOWINGID,
numFollowing: {$sum:1}
}
}]);
await User.findByIdAndUpdate({_id : FOLLOWEDID},{numfollowers:statsfollowedid[0].numFollowed})
await User.findByIdAndUpdate({ _id : FOLLOWINGID},{numfollowing:statsfollowingid[0].numFollowing})
}catch(err){
console.log(err);
}
}
我正在尝试为一个post挂钩创建一个聚集管道。findOneAndRemove方法mongoose。首先我尝试在一个post挂钩上执行此操作。(相同的代码在挂钩上工作。pre('save)
this._conditions在删除前获得的信息
followersschema.post('findOneAndRemove',function(){
console.log(this._conditions.followedid); console.log(this._conditions.followingid) //execute function for AdjustFollowersFollowing of both users after unfollow
this.constructor.AdjustFollowersFollowing(this._conditions.followedid,this._conditions.followingid)
});
我得到的错误消息是:
类型错误:此.构造函数. AdjustFollowersFollow不是函数
向上也是我所尝试的
我接下来要做的是
1条答案
按热度按时间hfsqlsce1#
尝试使用一些节点包,比如expressjs,express有一些函数可以用来解决你问题。你可以在终端中运行这个来安装:
npm init -y
npm -i express