首页 > 解决方案 > 输入字段最大值验证服务器响应

问题描述

我有一个在 MongoDB 集群中保存成绩的 React 函数。但是,它会保存任何值,但我只想保存 1 到 10 之间的值,如果值超出此间隔,我想显示警报并且不要在数据库中保存成绩。

这是我的功能:

const saveGrade = async (id, value, idGrade) => {
try {
  setLoading(true);
  setSuccess(false);
  setError("");
  let resp = null;
  resp = await axios.post(`subjectGrade/create`, {
    subjectStudent: id,
    partial: semester,
    grade: value,
  });
  if (value <= 10 && value >= 1) {   \\here im adding the range i want
    if (resp.status === 200) {
      setSuccess(true);
      const ids = dataUserSubjects.reduce((ids, item) => {
        if (item.subject._id === subjectAssigned) ids.push(item._id);
        return ids;
      }, []);
      const getSubjectGrades = async () => {
        const gradesSubject = await axios.post(`/subjectGrade/all`, {
          ids,
        });
        setStudentsGrades(gradesSubject.data);
      };
      await getSubjectGrades();
    } else {
      setError(resp.data.msg);
    }
  } else {
    alert("NOT OK");  \\here i display an alert, but value is still saved in database

  }
} catch (err) {
  setError(err.message);
}
setLoading(false);
};

标签: javascriptreactjsmongodbaxios

解决方案


不清楚 axios.post( subjectGrade/create) 做了什么,但我认为你应该在 if 语句中嵌套这段代码:

    if (value <= 10 && value >= 1){
      let resp = null;
      resp = await axios.post(`subjectGrade/create`, {
        subjectStudent: id,
        partial: semester,
        grade: value,
      });
      if (resp.status === 200) {
      ...

如果没有,请提供更多详细信息。


推荐阅读