簡體   English   中英

為什么數組發布數據推送給錯誤的用戶?

[英]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> ) }

考慮改進變量的名稱。 currentcurrentUseruser很難區分。 你能給我解釋一下這三個變量之間的區別嗎? 也許那樣我們可以更好地幫助你。

問題是,我在 mainController 中使用:

 const updateUser = await UserSchema.findOneAndUpdate( secret, { $push: { likes: likesObj } }, { returnDocument: 'after' })

所以我只是在findOneAndUpdate大括號中添加了 secret 這樣的{secret}這就是我的整個問題所在..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM