监听的data事件没执行

来源:5-9 开发路由(处理 POSTData)

qq_慕工程417253

2019-04-21

const handleBlogRouter = require('./src/router/blog.js')
const handleUserRouter = require('./src/router/user.js')
const querystring = require('querystring')

const getPostData = (req) => {
    const promise = new Promise ((resolve, reject) => {

        if (req.method !== 'POST') {
            resolve({})
            return
        }

        if (req.headers['content-type'] !== 'application/json') {
            resolve({})
            return
        }

        let postData = ''
        console.log(123)
        req.on('data', chunk => {
            console.log(456)
            postData += chunk.toString()
            console.log('data ', postData)
        })

        req.on('end', () => {
            if (!postData) {
                resolve({})
                return
            }
            console.log('end ', postData)
            resolve(
                JSON.parse(postData)
            )
        })
    })
    
    return promise
}
const app = (req, res) => {
    let url = req.url
    req.path = url.split('?')[0]

    // 设置传输的数据格式
    res.setHeader('Content-type', 'application/json')
    // 获取get参数
    req.query = querystring.parse(url.split('?')[1])
    // 处理 post 数据
    getPostData(req).then(postData => {
        console.log(postData)
        req.body = postData
        const blogData = handleBlogRouter(req, res)
        if (blogData) {
            res.end(
                JSON.stringify(blogData)
            )
            return
        }
        
        const userData = handleUserRouter(req, res)
        if (userData) {
            res.end(
                JSON.stringify(userData)
            )
            return
        }

        // 未命中的路由 返回404
        res.writeHead(404, {"Content-type":"text/plain"})
        res.write("404 Not Found
")
        res.end()
    })
    
}

module.exports = app
写回答

1回答

qq_慕工程417253

提问者

2019-04-21

postman没传参的问题

0
1
双越
好的。再有疑问再来继续提问哈。
2019-04-21
共1条回复

Node.js+Express+Koa2+Nest.js 开发服务端

从入门到实战,一站式掌握 Node.js+Express+Koa2

4124 学习 · 2022 问题

查看课程