好吧其实是用标题吸引人的。。 前几天问过这个问题,当时没人回答,现在想好好说一下问题然后再咨询一次。 涉及到数据库的查询,有两个model,一个是username,一个是login,然后写的是login的注册,那提取出来login的username字段,在username的model里查是不是已经存在,如果存在,返回exist,如果不存在,那就执行username的add操作,然后login在执行add操作。如果后两步哪里断了,就返回failed,成功了返回success
如果是用callback写的话大约逻辑就是这样的
其中checkExist用的是count方法 username.count(query, callback)就这样 add用的就是create方法
然后我就查了下promise的写法,mongoose的官网提到,mongoose的query不是promise但是支持then方法,然后我就把username的export那些方法都加了return,这么写了一下
结果他第一步check到了exist,但是还是执行login的create操作了,我就纳闷如果不返回promise怎么还能往下继续执行,但是想想mongoose的query不是promise,这样可能也说的通,然后我就把第一步的return false改成了一个throw error
但是这样做的话,我怎么去记录这个返回的状态呢? 在这个function里用一个变量,然后再加一个then方法单独返回状态吗? 总之感觉还是新手,这里应该还是写的不太好,希望大大们能提供个更好看的写法,或者给我个promise在mongoose应用的demo
还有就是,实际用mongo shell 查表发现,username的add多了一个空的记录,我完全不知道这个是哪里来的
这个是哪里的问题?
还望大神们不吝解答 还有暂时没打算用bb,因为promise还没用好直接用bb总感觉没学会走就跑的感觉。。。