Почему я не могу получить доступ к другим объектам пользователя?

#node.js #reactjs #mongodb #redux

#node.js #реагирует на #mongodb #возвращение

Вопрос:

Я создаю приложение для блога. Я пытаюсь получить доступ к каждой детали поста. В модели я добавил пользователя, как mongoose.Schema.Types.ObjectId с ref: 'User' . В интерфейсной части я использую react с redux, в то время console.log как подробности поста показывают мне все, даже user_id то, но я не могу получить доступ к пользовательским объектам, таким как имя и т. Д. Пожалуйста, проверьте этот код, чтобы сказать мне, где я делаю что-то не так.

Пожалуйста, если вам нужны какие-либо другие подробности, пожалуйста, прокомментируйте.

СТРАНИЦА ПРОСМОТРА ОДНОЙ ЗАПИСИ

 import { useEffect } from 'react';  import { Col, Container, Row } from 'react-bootstrap';  import { useDispatch, useSelector } from 'react-redux';  import { ToastContainer } from 'react-toastify';  import { listPostDetails } from '../actions/postActions';  import Category from '../components/Category';    const SinglePost = ({ match }) =gt; {  const postId = match.params.id;    const dispatch = useDispatch();    const postDetails = useSelector((state) =gt; state.postDetails);  const { post } = postDetails;    console.log(post);    useEffect(() =gt; {  dispatch(listPostDetails(postId));  }, [dispatch, postId]);    return (  lt;div className="pt-5 pb-3"gt;  lt;ToastContainer /gt;  lt;Containergt;  lt;Rowgt;  lt;Col xs={12} sm={12} md={12}gt;  lt;img  src={post?.img}  alt={`${post?.title} pic`}  className="singlePostImage"  /gt;  lt;/Colgt;  lt;Col xs={12} sm={12} md={9} className="singlePostHeading"gt;  lt;h2gt;{post?.title}lt;/h2gt; ---------------------------------------------------------------------------------------  lt;smallgt;Author: {post?.user?.name}lt;/smallgt; lt;br /gt;  lt;smallgt;Posted on: lt;/smallgt; -------------------------------------------------------------------------------------  lt;/Colgt;  lt;Col md={3} className="singlePostCategory"gt;  lt;Category /gt;  lt;/Colgt;  lt;/Rowgt;  lt;/Containergt;  lt;/divgt;  );  };    export default SinglePost;  

Вот модели, пожалуйста, проверьте, есть ли какие-либо ошибки в моделях

 import mongoose from 'mongoose';  const postSchema = mongoose.Schema(  {  user: {  type: mongoose.Schema.Types.ObjectId,  ref: 'User',  required: [true, 'Please Author is required'],  },  title: {  type: String,  required: true,  },  desc: {  type: String,  required: true,  },  img: {  type: String,  },  isLiked: {  type: Boolean,  default: false,  },  isDisLiked: {  type: Boolean,  default: false,  },  likes: [  {  type: mongoose.Schema.Types.ObjectId,  ref: 'User',  },  ],  disLikes: [  {  type: mongoose.Schema.Types.ObjectId,  ref: 'User',  },  ],  comments: [  {  user: {  type: mongoose.Schema.Types.ObjectId,  ref: 'User',  },  text: {  type: String,  required: true,  },  name: {  type: String,  },  pic: {  type: String,  },  date: {  type: Date,  default: Date.now,  },  },  ],  categories: {  type: Array,  },  },  {  timestamps: { createdAt: 'created_at', updatedAt: 'modified_at' },  } );  const Post = mongoose.model('Post', postSchema);  export default Post;  

User Model

 import mongoose from 'mongoose'; import bcrypt from 'bcryptjs';  const userSchema = mongoose.Schema(  {  name: {  type: String,  required: [true, ' Please provide a name'],  },  email: {  type: String,  trim: true,  required: [true, ' Please provide a email'],  unique: true,  match: [  /^(([^lt;gt;()[]\.,;:s@"] (.[^lt;gt;()[]\.,;:s@"] )*)|(". "))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9] .) [a-zA-Z]{2,}))$/,  'Please provide a valid email',  ],  lowercase: true,  },  password: {  type: String,  minlength: 6,  required: [true, 'Please add a password'],  },  isAdmin: {  type: Boolean,  default: false,  required: true,  },  pic: {  type: String,  required: true,  default:  'https://icon-library.com/images/anonymous-avatar-icon/anonymous-avatar-icon-25.jpg',  },  },  {  timestamps: { createdAt: 'created_at', updatedAt: 'modified_at' },  } );  userSchema.methods.matchPassword = async function (enteredPassword) {  return await bcrypt.compare(enteredPassword, this.password); };  userSchema.pre('save', async function (next) {  if (!this.isModified('password')) {  next();  }   const salt = await bcrypt.genSalt(10);  this.password = await bcrypt.hash(this.password, salt); });  const User = mongoose.models.User || mongoose.model('User', userSchema);  export default User;