流浪的菜袅 2023-10-19 02:26 采纳率: 79.5%
浏览 8
已结题

nodejs接受不大post参数

是这样的,我前端uniapp提交post请求,nodejs后端接收不到参数,一直打印req.body为undefind,不知道错哪了,大锅们帮我看看呗

request的封装:
export const request = (option) => {
        option.url = 'http://localhost:3000/api' + option.url
        option.method = option.method || "Get"  
        option.data =  option.data || {}
        option.header = option.header || {"content-type":"application/x-www-form-urlencoded"}
        option.dataType = option.dataType || "json"
        return new Promise((res,rej) => {
            uni.showLoading({
                title: '数据加载中'
            })
            uni.request({
                ...option,
                success:(val) => {
                    if(val.code != 200) {
                        return rej()
                    }
                    let data = val.data
                    res(data)
                }
            })
            uni.hideLoading()
        })
    }



post请求的发起:
methods: {
            login:async function(){
                let form = this.form
                let obj = {}
                let newForm = Object.assign(obj,form)
                console.log(newForm);
                const post = await request({url:'/login/post',method:'post',data:newForm})
                console.log('post',post);
            },
        },


nodejs入口文件的处理:
const express = require('express')
const app = express()
const port = require('./config/index')
const bodyParser = require('body-parser')
const cors = require('cors')
app.use('/api',require('./router/index.js'))
app.use(bodyParser.urlencoded({extended:false,limit:'100mb'}))
app.use(bodyParser.json({limit:'100mb'}))
// 处理跨域
app.use(cors()) 
app.listen(port.app.port,() => {
    console.log('宠物市场nodejs端运行成功');
})


nodejs‘具体处理post请求的路由文件:
router.post('/post',(req,res) => {
    try {
        console.log('-------------------',req.body);
        let body = req.body
        console.log('----body----',body);
        pool.getConnection(function(err,connection) {
            if(err) {
                console.log('/login/post--connection--err',err);
                return res.status(500)
            }
            connection.query(`insert into login values(0,?,?)`,Object.values(body),(error,data) => {
                if(error) {
                    console.log('/login/post--connection--error',error);
                    return res.status(500)
                }
                connection.release()
                res.send({code:200,msg:'账号创建成功'})
            })
        })
    } catch(err) {
        res.status(500).send(err)
    }
})

之前我都是这么弄的啊,一段时间不打代码咋就不行啦

  • 写回答

2条回答 默认 最新

  • 流浪的菜袅 2023-10-20 22:10
    关注

    。。。。。无语了。
    解决方法就是
    在nodejs中针对post请求参数为undefind的情况,要用中间件或者body-parser包
    app.use(express.json())
    或者
    app.use(bodyPaeser.json())
    最重要的是,这段代码顺序要在引入的路由文件前面!

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月10日
  • 创建了问题 10月19日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀