【问题标题】:MongoDB update userMongoDB更新用户
【发布时间】:2022-12-10 21:57:39
【问题描述】:

我正在尝试更新用户,但它给了我这个错误:

我找不到任何解决方案。尝试使用不同的UserSchema方法,比如findOneAndUpdate、updateOne,但没有任何帮助。

这是我的主控制器:

 updateUser: async (req, res) => {
        try {
            const updatedUser = await UserSchema.updateOne({ secret: req.params.secret }, { $set: req.body });
            res.status(200).json(updatedUser);
        } catch (error) {
            res.status(400).json({ message: error.message });
        }
    },

这是我的路由器:

mainRouter.post('/update/:secret', updateUser)

这是我在前端发布的地方:

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 secret = window.localStorage.getItem('secret')
    const nav = useNavigate()

    useEffect(() => {
        async function currentUser() {
            const resp = get(`user/${secret}`)
            setCurrent(resp)
        }
        currentUser()
    }, [])

    useEffect(() => {
        async function fetchUsers() {
            const resp = await get('api')
            getAllUsers(resp)
        }
        fetchUsers()
    }, [])

    allUsers.filter(user => user.secret !== secret)
    console.log(index)
    const currentUser = allUsers[index];

    async function postLiked() {
        const likedObj = {
            liked: [currentUser]
        }
        const likesObj = {
            likes: [current]
        }
        await post(`update/${current.secret}`, likedObj)
        await post(`update/${currentUser.secret}`, likesObj)
    }

    async function postDislike() {
        const dislikeObj = {
            disliked: [currentUser]
        }
        await post(`update/${current.secret}`, dislikeObj)
    }


    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(); 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>
    )
}

【问题讨论】:

    标签: node.js reactjs mongodb rest


    【解决方案1】:

    如果 react 和 node.js 在不同的端口上运行,浏览器将拒绝连接。

    在const app = express();之后添加这一行

    app.use((req, res, next) => {
    res.setHeader("Access-Control-Allow-Origin", "*");
    res.setHeader("Access-Control-Allow-Methods", "POST,OPTIONS, GET,  PUT, PATCH, DELETE");
    res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization,token-type");
    next();
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多