user.ts
import mongoose from "mongoose";
const UserSchema=new mongoose.Schema({
_id:mongoose.Types.ObjectId,
name:{
type:String,
require:true
},
email:{
type:String,
require:true
},
password:{
type:String,
require:true,
},
liked:[{
type: mongoose.Types.ObjectId,
ref:'blogs',
require:true
}],
myBlog:[{
type: mongoose.Types.ObjectId,
ref:'blogs',
require:true
}]
})
module.exports=mongoose.models.users||mongoose.model('users',UserSchema)
blogs.ts
import mongoose from "mongoose";
const BlogSchema=new mongoose.Schema({
_id:mongoose.Types.ObjectId,
users:{
type: mongoose.Types.ObjectId,
ref:'users',
required:true
},
title:{
type:String,
require:true
},
discription:{
type:String,
require:true
},
Date:{
type:String,
require:true,
},
Comments:{
type:Array
},
Likes:{
type:Number
},
})
module.exports=mongoose.models.blogs||mongoose.model('blogs',BlogSchema)
DetailUser.ts
import connectMongo from '@/Backend/Utils/connect'
import type { NextApiRequest, NextApiResponse } from 'next'
const user=require('../../../Backend/Models/user')
const blog=require('../../../Backend/Models/blogs')
type Data = {
name: string
}
export default async function handler(
req: NextApiRequest,
res: NextApiResponse<Data>
) {
if(req.method=="GET"){
await connectMongo()
const UserId="64b7e7a10d418980ac5d6a2f"
try{
const doc=await user.findOne({_id:UserId}).populate("blogs").exec()
const response:any={
message:"success",
Blogs:doc
}
res.json(response)
}catch(e){
console.log(e)
const response:any={
message:"failed",
Blogs:e
}
res.json(response)
}
}
}
I want to populate blogs of user but it is not working and giving me response as:
{
"message": "failed",
"Blogs": {
"path": "blogs"
}
}
Console Output Of error
I was trying to populate the blogs of each user but it is not working. I tried to populate the blogs and it didn't work. I cross checked the name of my model that was also fine please help.
The populate path is myBlog
, not blogs
or myBlogs
.
const doc = await user.findOne({_id:UserId}).populate("myBlog").exec()