2/11 Express 通过 mongoose 的 CRUD 发现的坑

写在前面

  本人太过于菜鸡,今天可谓是废了九牛二虎之力把 mongoose 连接 mongoDB 给搞出来了,太 cao dan le

  在此之前,我希望有缘人看到这,可以先复习一下js异步的问题,

  在这里我以 Promise 为例子简单写了一个随笔 供大家参考

  https://www.cnblogs.com/WaterMealone/p/14396590.html


第一点 为什么接收不到 post 请求 body 的 json 数据

  express 里面要设置一下,不能直接接受body里面的数据

  在入口文件 app,js 里面添加这个

  

1 // req.body解析
2 var bodyParser = require('body-parser');//用于req.body获取值的
3 
4 
5 
6 // 创建 application/x-www-form-urlencoded 编码解析
7 app.use(bodyParser.urlencoded({ extended: true}));

第二点 为什么显示了  topology 错误

  这个是因为,在关闭 connection 的时候没有在 once 里面关闭

  

 

 第三点 显示了send重复,但是逻辑上应该怎么办

  这个是一个大坑,我今天就滚进去了,我来说一下事发经过

  首先,显示了send 太多了之后,我想了一个法子,定义一个 "全局" 变量 message ,我们可以修改这个变量

  最终才send这变量 message 

  好家伙,设置了之后,我发现,最后最初的数据还是最初的数据,这让我百思不得其解

  翻了翻网上的资源

  我才知道,唯一的答案,是异步处理的问题,连接数据库的时间太久了,那么就先都执行了简单的东西

  于是修改了一下代码,用了promise

  下图有bug, resolve 的位置放错了,这里的异步还是执行早了

  

  应该是这个

  

 

 

 第四点 更新 ( update ) 的时候,应该如何更新,是一个一个传吗

  这个当时也很伤脑筋,但是还是翻网页给翻出来了

  

 

   只要我们的条件是这个样子,传入的数据 可以部分传入修改 或者全部传入修改

    1.全部传入修改 ( 当然这个对于其他不变的属性 也就是覆盖  具体是要参考一下 $set )

    原先的数据

    

    postman里面写的post body 数据

    

 

     修改

    

 

    2.部分传入

    

 

     修改后

    

 

  暂时应该没有了

  新年快乐

 

posted @ 2021-02-11 17:07  WaterMealone  阅读(74)  评论(0编辑  收藏  举报