数据插入不成功找不出是哪里的问题?

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

鹿人神经粉

2020-10-29

老师,新建博客postman显示错误,已经实际调用数据了,我的代码没有写错呀,感觉blogData显示 Promise { }有问题
图片描述
图片描述图片描述图片描述

写回答

5回答

双越

2020-10-30

我看了你的代码 https://github.com/WUDANRU/blog-1-promise-test- ,找到问题了,帮你分析一下。


第一,你代码中 src/router/blog.js 57 行开始,处理 /api/blog/new 路由,返回的是一个 promise

if (method === 'POST' && req.path == '/api/blog/new') {

    //   之前的;
    // const data = newBlog(req.body) //controller的blog.js(blogData = {}等于req.body
    // return new SuccessModel(data)

    // 现在的:
    req.body.author = 'zhangsan' //新建博客没有author,写一个author的假数据 (假数据,待开发登录时再改成真实数据)
    const result = newBlog(req.body) //result是controller/blog.js的id(id: insertData.insertId)
    return result.then(data => { //postman显示404 not found,所以需要return promise(虽然没有return但是数据的值(conroller/blog.js)是有插入,可以在mysql测试有没有插入:select * from blogs;)
        console.log('datadata', data) //{ id: 17 }
        return new SuccessModel(data)
    })
}

第二,你代码中,app.js 52行开始,接收到的数据,肯定就是上面所说的 promise 对象

if (blogData) {
    console.log('blogblog', blogData) // 老师这个显示Promise { <pending> },但是cmd能显示出{id:28},postman显示的是{}
    res.end(
        JSON.stringify(blogData) //postman的send后的body显示错的{},因为blogData不对
    )
    return
}

promise 是一个异步,你没等它执行完,直接 res.end ,那可定是拿不到值的。


第三,你再看看讲师的代码,代码中做了改动,等 then 之后再 res.end(还把之前代码做了注释,来对比)

//img.mukewang.com/szimg/5f9bd3f50922057d30601290.jpg


最后,我好奇问一下。我一直建议你自己去顺着代码逻辑排查 bug ,但是你一直没查到。到底是什么原因呢?

  • promise 的基本应用没搞懂?

  • 没仔细去查?

  • 查了,但是逻辑没看明白?

  • 还是其他?


因为回答你这个问题,占据了我太多的事件,希望你能回复一下,我也借机去看看课程是否真的有遗漏。

0
0

鹿人神经粉

提问者

2020-10-30

老师,代码已上传,github地址:https://github.com/WUDANRU/blog-1-promise-test-.git

 blog/detail和blog/new都是真数据cmd打印的是对的,就是两个显示的都是{}

0
2
鹿人神经粉
回复
双越
好的?
2020-10-30
共2条回复

双越

2020-10-29

额。。这个截图,我看着都懵了。搞不懂这些截图都是哪个文件里的。


按照调试的一般步骤,慢慢来吧。

首先,看你 postman 里最后返回的是 {} ,代码中最后返回的数据是什么?这个数据是怎么来的?

0
0

鹿人神经粉

提问者

2020-10-29

//img1.sycdn.imooc.com/szimg/5f9a4b710963a87c06510535.jpg

//img.mukewang.com/szimg/5f9a4b710943653c12850913.jpg

new blog的截图


0
0

双越

2020-10-29

我都没看明白,你是哪里报错了?没看到有错误提示

0
0

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

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

4051 学习 · 2006 问题

查看课程