javascript - 如何在 vuejs 中发出补丁请求并更新使用 v-model 的个人的标记输入

标签 javascript express vue.js

您好,我正在使用 vuejs、express 和 mongoDB 制作学生评估输入表单。我已经完成了后端 API 的工作,并且使用 postman 进行测试工作正常。下面是代码。

// UPDATE MARKS
router.patch('/:studentId', async (req, res) => {
    try{
    const updatedStudent = await Assessment.updateMany({_id: req.params.studentId},
        {
            $push:
            { homework: req.body.homework,
              classtest:req.body.classtest, 
              projectwork:req.body.projectwork, 
              exams:req.body.exams },
        });
        res.json(updatedStudent);
            }catch (err) {
                res.json({ message: err });
    }
});

我一直坚持让它与 vuejs 前端一起工作。我创建了一个 JavaScript 文件“assessment.js”来发出其中的所有请求,如下所示;

import axios from 'axios';

const url = 'http://localhost:9000/contAssessment/';
   ...
    // Add Marks
    static addMarks(homework) {
        return axios.patch(url, {
            homework
        });
    }
}

export default assessmentService;

我已将其导入到标记组件表单中,如下所示;

<template>
    <div id="container">
        <div 
            v-for="assessment in assessments" 
            v-bind:key="assessment._id"
            >
            <div id="students_marks_info"
            v-if="assessment.students.classes===classes"
            > 
            <p> {{assessment.students.name}} </p> 
            <p> <input type="text" v-model="homework"> </p>
            </div>
        </div>
        <button type="submit" v-on:click="addMarks(homework)">Submit</button>
    </div>
</template>


<script>
import assessmentService from '../assessmentService';

export default {
  name: 'marksEntryForm',
  data() {
    return {
      assessments: [],
      error: '',
      classes: '',
      homework: []
    }
  },
  async created() {
    try {
      this.assessments = await assessmentService.getAssessments();
    } catch(err) {
      this.error = err.message;
    }
  },
  methods: {
   async addMarks() {
      await assessmentService.addMarks(this.homework);
      this.assessments = await assessmentService.getAssessments();
      }
    }}
</script>

每当我单击按钮运行 addMarks 方法时,我都会收到 404 错误请求。我的输入也有问题。每当我为学生输入分数时,其他学生的输入中都会出现相同的分数。由于我是 vuejs 新手并使用 axios 发出补丁请求,因此我需要您对此问题的友好回复。谢谢

最佳答案

您在服务器上的路由器是here_is_your_url/:studentId,但在请求中从前面到http://localhost:9000/contAssessment/(没有:studentId)

关于javascript - 如何在 vuejs 中发出补丁请求并更新使用 v-model 的个人的标记输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59618381/

相关文章:

javascript - 将数组组转换为对象

javascript - 使用 Vue 和 Jest/Vue 测试工具模拟 API 调用

javascript - Axios 未在请求中发送自定义 header (可能是 CORS 问题)

javascript - 我们如何将 unix 时间戳中的时间转换为 MySQL 中基数为 32 的字符串

javascript - JS库应该放在哪里(host)

javascript - 将变量从 jade 传递到 javascript

node.js - 在 Controller 中使用 api 请求 header 的有效方法,Node Express Js 中的模型

mysql - node.js mysql 池 beginTransaction & 连接

javascript - 将动态数据传递给路由器链路。

javascript - GWT 2.7 : What is the difference between -XjsInteropMode JS and -XjsInteropMode CLOSURE?