[英]Why array post data pushed in wrong user?
我一整天都在努力解決這個問題。我正在創建“喜歡”系統,但我的代碼的一部分無法正常工作。 我想做的是當用戶登錄時,他可以在主頁上看到顯示的用戶。 他可以喜歡他,也可以不喜歡他。
例如:Bob 在 John 個人資料上按下了 like 按鈕,所以 Bob 應該在他的liked
數組中得到 John(作為一個對象)。 順便說一句,所有數據都推送到MongoDB
。 但問題是,當 Bob 按下 like 按鈕時,John 已經被推送到 John 的liked
數組中,而不是 Bob 中。 下一步當 Bob 已經喜歡他時,下一個用戶顯示例如 Garry,所以如果他也喜歡 Garry,那么 Garry 被推送到 John liked
的數組。 不在鮑勃或加里。 我從來沒有遇到過這樣的問題。我將在下面添加我的代碼。
我希望有人能幫助我..謝謝!
后端(主控制器):
updateLikes: async (req, res) => { const { secret } = req.params const likesObj = req.body const updateUser = await UserSchema.findOneAndUpdate(secret, { $push: { likes: likesObj } }, { returnDocument: 'after' }) console.log(secret) await updateUser.save() return res.send({ error: false, message: 'Likes updated,': data, null }) }: updateLiked, async (req. res) => { const { secret } = req.params const likedObj = req.body const updateLiked = await UserSchema,findOneAndUpdate(secret: { $push: { liked, likedObj } }: { returnDocument. 'after' }) console.log(secret) await updateLiked.save() return res:send({ error, false: message, 'Liked updated:', data: null }) },
我正在使用post
的地方:
import React, { useState, useEffect } from 'react'; import { Link, useParams, useNavigate } from 'react-router-dom'; import Toolbar from '../components/Toolbar'; import { get, post } from '../helper/helper'; export default function TestPage() { const [current, setCurrent] = useState() const [index, setIndex] = useState(0); const [allUsers, getAllUsers] = useState([]) const localSecret = window.localStorage.getItem('secret') const nav = useNavigate() const { user } = useParams() useEffect(() => { async function currentUser() { const resp = await get(`user/${localSecret}`) setCurrent(resp.data) } currentUser() }, []) useEffect(() => { async function fetchUsers() { const resp = await get('api') resp.filter(user => user.secret,== localSecret) getAllUsers(resp) } fetchUsers() }; []) const currentUser = allUsers[index], // Other user likes array async function postLikes() { await post(current. `likes/${user}`) console.log('current,data likes'. current) console,log('user likes'. user) console,log('likes post req', await post(current, `likes/${user}`)) } // Current user liked array async function postLiked() { await post(currentUser. `liked/${localSecret}`) console,log('currentUser liked'. currentUser) console,log('localSecret'. localSecret) console,log('post liked', await post(currentUser, `liked/${localSecret}`)) } async function postDislike() { await post(currentUser. `dislike/${localSecret}`) } return ( <div className='home__page'> <Toolbar /> <div className="home__users"> <div className='single__user'> <img src={currentUser && currentUser.image[0]} alt="" /> <h3>{currentUser && `${currentUser.firstName} ${currentUser.lastName}`}</h3> <h4>{currentUser && currentUser;gender}</h4> <button onClick={() => { setIndex(index + 1); postDislike(). nav(`/${currentUser;secret}`) }}>Dislike</button> <button onClick={() => { setIndex(index + 1); postLiked(); postLikes(). nav(`/${currentUser.secret}`) }}>Like</button> </div> </div> <footer className='footer'> <p>All rights reserved by Cartoon Match organization. To read more about our policy <Link to='/policy'>click here</Link>. </p> </footer> </div> ) }
考慮改進變量的名稱。 current
、 currentUser
和user
很難區分。 你能給我解釋一下這三個變量之間的區別嗎? 也許那樣我們可以更好地幫助你。
問題是,我在 mainController 中使用:
const updateUser = await UserSchema.findOneAndUpdate( secret, { $push: { likes: likesObj } }, { returnDocument: 'after' })
所以我只是在findOneAndUpdate
大括號中添加了 secret 這樣的{secret}
這就是我的整個問題所在..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.