首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >请求失败,状态代码500在axios post方法中出错

请求失败,状态代码500在axios post方法中出错
EN

Stack Overflow用户
提问于 2022-08-28 06:03:53
回答 2查看 178关注 0票数 2

在这里,我试图通过POST将一个对象插入到Mongodb,使用我发送的axios.the对象成功地插入到MongoDB集合中。插入对象后,我需要重定向到主页,但不是这样,而是在axios response data中获取axios错误,给出消息No write concern mode named majority found in replica set configuration

这是我的密码

UserSignUp.jsx

代码语言:javascript
运行
复制
export default function SignUpScreen() {
  const navigate = useNavigate();
  const { search } = useLocation();
  const redirectInUrl = new URLSearchParams(search).get('redirect');
  const redirect = redirectInUrl ? redirectInUrl : '/';

  const [name,setName] = useState('');
  const [email, setEmail] = useState('');
  const [password, setPassword] = useState('');
  const [confirmPassword, setConfirmPassword] = useState('')

  const { state, dispatch: ctxDispatch } = useContext(Store);
  const { userInfo } = state;

  const submitHandler = async e => {
    e.preventDefault();
    if(password !== confirmPassword) {
        toast.error('Passwords do not match');
        return;
    }
    try {
      const { data } = await axios.post('/api/users/signup', {
        name,
        email,
        password,
      });
      ctxDispatch({ type: 'User_SignIn', payload: data });
      localStorage.setItem('userInfo', JSON.stringify(data));
      navigate(redirect || '/');
    } catch (err) {
      toast.error(getError(err));
      console.log(err);
    }
  };
  useEffect(() => {
    if (userInfo) {
      navigate(redirect);
    }
  }, [navigate, userInfo, redirect]);
  return (
    <Container className='small-container'>
      <Helmet>
        <title>Sign Up</title>
      </Helmet>
      <h1 className='my-3'>Sign Up</h1>
      <Form onSubmit={submitHandler}>
        <Form.Group className='mb-3' controlId='name'>
          <Form.Label>Name</Form.Label>
          <Form.Control
            required
            onChange={e => setName(e.target.value)}
          />
        </Form.Group>
        <Form.Group className='mb-3' controlId='email'>
          <Form.Label>Email</Form.Label>
          <Form.Control
            type='email'
            required
            onChange={e => setEmail(e.target.value)}
          />
        </Form.Group>
        <Form.Group className='mb-3' controlId='password'>
          <Form.Label>Password</Form.Label>
          <Form.Control
            type='password'
            required
            onChange={e => setPassword(e.target.value)}
          />
        </Form.Group>
        <Form.Group className='mb-3' controlId='confirmPassword'>
          <Form.Label>Confirm Password</Form.Label>
          <Form.Control
            type='password'
            required
            onChange={e => setConfirmPassword(e.target.value)}
          />
        </Form.Group>
        <div className='mb-3'>
          <Button type='submit'>Sign Up</Button>
        </div>
        <div className='mb-3'>
          Already have an account?{' '}
          <Link to={`/signin?redirect=${redirect}`}>Sign-In</Link>
        </div>
      </Form>
    </Container>
  );
}

userRouter.js

代码语言:javascript
运行
复制
userRouter.post(
  '/signup',
  expressAsyncHandler(async (req, res) => {
    const newUser = new User({
      name: req.body.name,
      email: req.body.email,
      password: bcrypt.hashSync(req.body.password),
    });
    try {
            const user = await newUser.save();
            res.send({
              _id: user._id,
              name: user.name,
              email: user.email,
              isAdmin: user.isAdmin,
              token: genarateToken(user),
            });
    } catch (err) {
     res.status(500).send(err)
    }
  })
);
export default userRouter;

UserModel.js

代码语言:javascript
运行
复制
const userSchema = new mongoose.Schema(
    {
        name: {type:String, required: true},
        email: {type:String, required: true, unique:true},
        password: {type:String, required: true},
        isAdmin: {type: Boolean, default: false,required: true},
    },
    {
        timestamps: true
    }
)
const User = mongoose.model("User", userSchema);
export default User;

Routes in App.js

代码语言:javascript
运行
复制
<Routes>
              <Route path='/product/:slug' element={<ProductScreen />} />
              <Route path='/cart' element={<CartScreen />} />
              <Route path='/signin' element={<SignInScreen />} />
              <Route path='/signup' element={<SignUpScreen />} />
              <Route path='/shipping' element={<ShippingAddressScreen />} />
              <Route path='/' element={<HomeScreen />} />
            </Routes>

mongoURI in .env file

代码语言:javascript
运行
复制
MongoURI = mongodb+srv://Ecom:password@cluster0.c0ita7f.mongodb.net/EcomDB?retryWrites=true&w=majority

Error in Console

代码语言:javascript
运行
复制
AxiosError {message: 'Request failed with status code 500', name: 'AxiosError', code: 'ERR_BAD_RESPONSE', config: {…}, request: XMLHttpRequest, …}
code: "ERR_BAD_RESPONSE"
config: {transitional: {…}, transformRequest: Array(1), transformResponse: Array(1), timeout: 0, adapter: ƒ, …}
message: "Request failed with status code 500"
name: "AxiosError"
request: XMLHttpRequest {onreadystatechange: null, readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, …}
response: {data: {…}, status: 500, statusText: 'Internal Server Error', headers: {…}, config: {…}, …}
[[Prototype]]: Error

error showing in postman

代码语言:javascript
运行
复制
{
    "code": 79,
    "codeName": "UnknownReplWriteConcern",
    "errInfo": {
        "writeConcern": {
            "w": "majority,",
            "wtimeout": 0,
            "provenance": "clientSupplied"
        }
    },
    "result": {
        "n": 1,
        "electionId": "7fffffff0000000000000067",
        "opTime": {
            "ts": {
                "$timestamp": "7136856325794824195"
            },
            "t": 103
        },
        "writeConcernError": {
            "code": 79,
            "codeName": "UnknownReplWriteConcern",
            "errmsg": "No write concern mode named 'majority,' found in replica set configuration",
            "errInfo": {
                "writeConcern": {
                    "w": "majority,",
                    "wtimeout": 0,
                    "provenance": "clientSupplied"
                }
            }
        },
        "ok": 1,
        "$clusterTime": {
            "clusterTime": {
                "$timestamp": "7136856325794824195"
            },
            "signature": {
                "hash": "OlulLu5s5TwSvEO60v4+6td/yt8=",
                "keyId": {
                    "low": 7,
                    "high": 1648401224,
                    "unsigned": false
                }
            }
        },
        "operationTime": {
            "$timestamp": "7136856325794824195"
        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-28 14:04:07

我得到了邮递员的"errmsg": "No write concern mode named 'majority,' found in replica set configuration",。我用.env文件编写了mongodb连接url。

  1. at .env file如果你在单引号或分号末尾写mongoURI代码。将发生以下错误。

例如,在

  1. 删除mongoURI中的?后,我的错误消失

MongoURI = mongodb+srv://Ecom:password@cluster0.c0ita7f.mongodb.net/EcomDB?

从这里开始

MongoURI = mongodb+srv://Ecom:password@cluster0.c0ita7f.mongodb.net/EcomDB?retryWrites=true&w=majority

票数 0
EN

Stack Overflow用户

发布于 2022-08-28 06:11:32

您的userSchema有isAdmin必需字段,但在“注册操作”中没有提供。在创建新用户时修改isAdmin (可选)或提供

代码语言:javascript
运行
复制
const newUser = new User({
      name: req.body.name,
      email: req.body.email,
      password: bcrypt.hashSync(req.body.password),
      // isAdmin: missing
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73516394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档