سلام خسته نباشید
من به مشکلی بر خوردم و نمیتونم درستش کنم ممنون میشم اگه بتونید کمکم کنید
من صفحه ای دارم که کاربر پستی رو ایجاد میکنه، پست برام ایجاد میشد تا قبل اینکه ID یوزر رو قرار میدم و به مشکلی روبه رو شدم که ایدی یوزر رو نمیتونه بشناسه
کد بک اند پست
const mongoose = require('mongoose')
const postSchema = new mongoose.Schema({
content: String,
user: {type: mongoose.Types.ObjectId, ref: 'Users'}
}, {
timestamps: true
})
module.exports = mongoose.model('post', postSchema)
کنترلر پست
const Posts = require('../models/postModel')
const postCtrl = {
createPost: async (req, res) => {
try {
const { content } = req.body
const newPost = new Posts({
content,
user: req.user._id // آیدی رو نمیشناسه و تو کنسول ارور 500 میده
})
await newPost.save()
res.json({
msg: 'Created Post!',
newPost,
})
} catch (err) {
return res.status(500).json({msg: err.message})
}
},
}
module.exports = postCtrl
کد فرانت Redux
import { GLOBALTYPES } from './globalTypes'
import { postDataAPI } from '../fetchData'
export const POST_TYPES = {
CREATE_POST: 'CREATE_POST',
}
export const createPost = ({content, auth, token}) => async (dispatch) => {
console.log({content, auth, token});
try {
dispatch({ type: GLOBALTYPES.ALERT, payload: {loading: true} })
const res = await postDataAPI('posts', { content }, token)
dispatch({
type: POST_TYPES.CREATE_POST,
payload: {...res.data.newPost, user: auth.user}
})
dispatch({ type: GLOBALTYPES.ALERT, payload: {loading: false} })
} catch (err) {
dispatch({
type: GLOBALTYPES.ALERT,
payload: {error: err.response.data.msg}
})
}
}
کد صفحه ایجاد پست
import React, { useState } from 'react'
import { useSelector, useDispatch } from 'react-redux'
import { GLOBALTYPES } from '../redux/actions/globalTypes'
import { createPost } from '../redux/actions/postAction'
const StatusModal = () => {
const { auth, theme, token } = useSelector(state => state)
const dispatch = useDispatch()
const [content, setContent] = useState('')
const handleSubmit = (e) => {
e.preventDefault()
dispatch(createPost({content, auth, token}))
setContent('')
dispatch({ type: GLOBALTYPES.STATUS, payload: false})
}
return (
<div className="status_modal">
<form onSubmit={handleSubmit}>
<div className="status_header">
<h5 className="m-0">Create Post</h5>
<span onClick={() => dispatch({
type: GLOBALTYPES.STATUS, payload: false
})}>
×
</span>
</div>
<div className="status_body">
<textarea name="content" value={content}
placeholder={`${auth.user.username}, what are you thinking?`}
onChange={e => setContent(e.target.value)} />
</div>
<div className="status_footer">
<button className="btn btn-secondary w-100" type="submit">
Post
</button>
</div>
</form>
</div>
)
}
export default StatusModal
از اکستنشن ریداکس مرورگر، چک کردم و آیدی رو دقیقا هنگام پست کردن میفرسته .
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟