我最近刚刚开始学习Vue.JS.我正在试着做一个简单的MEVN待办事项应用,以了解它是如何工作的,但每当我试图向我的Express服务器发送帖子时,它只会告诉我:

TypeError: Cannot read properties of undefined (reading 'TodoItem')

有人能告诉我我做错了什么吗?当我在发送之前对待办事项进行控制台记录时,它会记录我正在发送的所有内容.

Todo.vue

<template>
    <div>
        <form @submit.prevent="createPost">
            <div>
                <label for="todoItem">Todo Item</label>
                <input type="text" id="todoItem" v-model="todoItem">
            </div>
            <button>Create Post</button>
        </form>
    </div>
</template>

<script>
import axios from 'axios'

export default {
    name: "Todo",
    data() {
        return {
            todoItem: ''
        }
    },
    methods: {
        createPost() {

            console.log("Sending: " + this.todoItem)

            axios.post("http://[SERVER]/todo", this.todoItem)
                .then((response)=> console.log(response))
                .catch((error)=> console.log(error))
        }
    }
}

</script>

server.js

const express = require("express")
const bodyParser = require("body-parser")
const app = express()

app.set(bodyParser.json())
app.set(bodyParser.urlencoded({extended: true}))

app.get("/", (req, res)=> {
    res.send("Hello, World!")
})

app.post("/todo", (req, res)=> {
    const todoItem = req.body.todoItem

    console.log(todoItem)

    res.status(200)
    res.json({
        message: "success"
    })
})

app.listen(3000, "0.0.0.0", ()=> {
    console.log("Server is up and running.")
})

编辑:我听从了Teddy的回答,现在我从Vue.JS https://i.imgur.com/zq2W2AR.png得到了这个错误

推荐答案

您的帖子有效负载只是"项目文本"

您似乎希望有效负载为{todoItem:"Item Text"}

如果是这样的话,在发送的时候,你必须像这样发送

axios.post("http://[SERVER]/todo", {'todoItem':this.todoItem})

或者,在数据内部以不同的方式存储

就像..

return {
        todoItem: {
            todoText: ''
         }
    };

然后更改您的v-Model以匹配新 struct :

<input type="text" id="todoItem" v-model="todoItem.todoText">

现在您已经修复了数据 struct ,您可以只发送todoItem

axios.post("http://[SERVER]/todo", this.todoItem)

但是,在服务器端,文本现在被称为‘todoText’

const todoItem = req.body.todoText //Because req.body itself is todoItem

Javascript相关问答推荐

Vue.js使用特定索引值的数据更新html

在Phaser中查找哪个物体处于碰撞中

鼠标移动时更新画布

如何使用JavaScript动态地将CSS应用于ToDo列表?

用户单击仅在JavaScript中传递一次以及其他行为

如何在JavaScript中在文本内容中添加新行

扫描qr code后出错whatter—web.js

使用javascript将Plotly Expandable Sparkline转换为HighCharter Plot在bslib卡中

使用GraphQL查询Uniswap的ETH价格

如何解决useState错误—setSelect Image不是函数''

使用POST请求时,Req.Body为空

ChartJs未呈现

第二次更新文本输入字段后,Reaction崩溃

从Nextjs中的 Select 项收集值,但当单击以处理时,未发生任何情况

获取';无法解决导入和导入";slick-carousel/slick/slick-theme.css";';错误

是否可以将Select()和Sample()与Mongoose结合使用?

WebSocketException:远程方在未完成关闭握手的情况下关闭了WebSocket连接.&#三十九岁;

如何修复使用axios运行TSC index.ts时出现的错误?

构建器模式与参数对象输入

FireBase FiRestore安全规则-嵌套对象的MapDiff