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.部分传入
修改后
暂时应该没有了
新年快乐