首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

node+mongoose爬坑小结(一)

小编自己给自己捣鼓了个服务器,通过ngnix代理node,实现基本的增删改查!可能是第一次搞用node+mongoose,又野心太大,想要一步做到完美,遇到了一大堆问题!归根到底是小编的熟练度不够,熟能生巧不是说说的,同时也感谢帮助我的大神们!

由于没有日志系统,不能很好的定位问题在哪里,只能通过脑补和不断线上替换修改后的文件,来确定问题发生的位置!有空还是要把日志系统装起来!

遇到的问题有以下几个方面:

第一,数据库插入不了数据,通过大神指导,明白了node和mongoose操作数据库必须通过async和await,模拟promise,通过大神指导和反复尝试,在正确的地方加上了async和await。

第二,因为对mongoose的api不熟悉,导致卡了好长时间。mongoose中返回query是返回相关数据,query可以是对象,数字,长度等!其他的返回文档手册中也有介绍!

第三,深入了解了await,消化大神理解,加上个人理解,async和await是难兄难弟,必须同时出现,async声明异步函数,await可以有多个,await后面如果是promise对象,则返回promise对象的resolve()的值,也就是说你不必再使用then。这个时候小编纠结了,reject如何得到,最后通过try catch来解决这个问题。node中很多地方要用try catch,来处理和捕获异常!当然await后面也可以写不是promise的内容,一样返回!中间遇到一个很大的坑,代码如下:

mongoose中的回掉函数是不能使用async的,因为前面的await接受一个promise对象,所以里面回掉函数就不能用async,用了也无法触发指定效果,也就是只有return的情况下才能使用async和await,遇到这类情况,我们可以通过切换api来实现:

上图用了try catch,来实现了返回特定的数据,注意,这种写法的this.create传入必须的数组。,当然也可以手动构建一个promise对象来实现,比上面这种方法复杂一点!

这段是替代 try catch方法的,用一个新的promise对象,await会等待promise对象创建执行,并返回promise对象,这样回掉就可以用了!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180727G1XKBV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券