mongoose通过用户和他的追随者获取帖子

oxcyiej7  于 2023-08-06  发布在  Go
关注(0)|答案(3)|浏览(71)

如何获取用户的帖子及其所有关注的帖子(Mongodb,Mongoose,Nodejs)
用户架构

const userSchema = new mongoose.Schema({
    firstName: { type: String, required: true, trim: true },
    lastName: { type: String, required: true, trim: true },
});
userSchema.set('timestamps', true);

export default mongoose.model('user', userSchema);

字符串
关注者架构

const followSchema = new mongoose.Schema({
    follower: { type: mongoose.Schema.Types.ObjectId, ref: 'user' },
    following: { type: mongoose.Schema.Types.ObjectId, ref: 'user' },
    status: { type: Boolean, default: true }
});
followSchema.set('timestamps', true);

export default mongoose.model('follow', followSchema);


职位架构

const postSchema = new mongoose.Schema({
    userId: { type: mongoose.Schema.Types.ObjectId, ref: 'user' },
    contents: { type: String, trim: true },
    photo: { type: String }
});
postSchema.set('timestamps', true);

export default mongoose.model('post', postSchema);


在此先谢谢您!:)

3npbholx

3npbholx1#

Hy Alamghir很高兴在这里看到你,很抱歉你仍然没有得到答案,我可以在看到你的模式后建议你,我认为没有必要创建三个集合,你只需要2个模式第一个

const userSchema = new mongoose.Schema({
  firstName: { type: String, required: true, trim: true },
  lastName: { type: String, required: true, trim: true },
  followers:[]
});
userSchema.set('timestamps', true);

export default mongoose.model('user', userSchema);

字符串
现在,在followers数组中,只需推送关注此用户的用户的ID现在,您可以很容易地让这些人像这样完成帖子,假设您在userData变量中有用户数据,现在您可以这样做

db.postSchema.find($or:[{userId:userData._id},{userId:$in:userData.followers}])

xxe27gdn

xxe27gdn2#

对不起,你的问题错了。
可能有更好的解决方案,但你应该能够做到这一点:
(this获取关注您的原始用户的人的帖子。如果你的意思是相反的,只要切换:))

// get the user's posts:
var theUserPosts = await postSchema.find({userId: userData._id}).exec();

// get the follower-IDs:
var theFollowersIDs = await followSchema.find({follower: userData._id, status: true}, 'following').exec();

// get the posts of those followers:
var followerPosts = await postSchema.find({userId: {$in: theFollowersIDs}}).exec();

字符串
你能试试这个,告诉我们这对你是否有效吗?

5uzkadbs

5uzkadbs3#

您需要使用$graphLookup聚合来获取建议用户

相关问题