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对象,这样回掉就可以用了!

    

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值