美文网首页
express+mongoose小记

express+mongoose小记

作者: cs0710 | 来源:发表于2018-05-29 18:17 被阅读16次
    对于我而言,花开了一天时间去实践express框架和mongoose常用的API,虽然mngoose的官方版本已经出到了5.1.2,但是国内的中文文档刚刚到4.5,虽然这样,还是硬着头皮看了中文,因为英文我是最low的那一位!
    我这里直接说一下我的使用涉及到的点,由于刚刚接触不久,这里主要设计的功能API有增删改查和分页,以及对参数在不同场景下的使用传递。
    图片.png

    是不是看了页面想🤮。这是昨晚花了一个小时弄的,里面的路由用的是react-router v4版本,我主要想使用的是它的Link,这样可以和左侧菜单关联,省了好多事情,而不需要去映射路由。

    前端的直接使用的create-react-app生成的,左侧菜单是我担们拎出来使用的,用pro的话太重了,因为我这里只是先探个路,所以没那么多功能模块。

    node端我是直接使用的express-generator生成,只是在里面 加了一个mongoose的配置文件,去操作数据库。

    图片.png

    整个文件的命名,很随意,勿喷,给小弟留点信心!具体命名规范其实是需要在cmsServer的文件目录中根据MVC的分布目录去命名。一切搞好之后,只需要分别启动两台服务器,建议安装nodemon,对你修改的node文件进行监听,其实再懒一些,可以启动一台服务器,在package.json()文件夹里写入你的node启动脚本就可以,两者合并一下…...

    图片.png

    这里首先需要连接使用connenct()连接数据库,里面的参数是uri它的格式为“mongodb://用户名:密码@localhost:数据库端口号(默认27017)/数据库名字”,然后使用创建的连接实例坚挺连接状态即可。

    大前端
    图片.png 图片.png

    前端的请求使用的axios,这里为什么不使用fetch呢?

    是因为这里没有用到node的模版引擎,即使node必须要有模版引擎的引入。既然项目里两台服务器运行,就存在了跨域的问题,get请求还好,可以通过res.header("Access-Control-Allow-Origin", "*");绕过去,可是post是绕不过去的,据说已经有人给提他们团队出来了,很鸡肋啊!所以我推翻使用了axios。

    这里没使用redux或者dva(现在项目里使用到了dva),是因为对于简单的项目引入dva会增加复杂度。所以这里有引入了node的事件机制去通信和管理状态。

    前端使用的技术栈很少,所以这里酒到此为止了吧。

    node-server
    图片.png

    这里的schema对于字段的校验和初始化可以参考文档,但是这里有一个小坑,就是createTime的default字段我刚开始设置的Date.now()获取的时间戳传递进去了,结果再去新建时时间不会改变,需要强制刷新浏览器才可以。

    原因就是这里,其实因该使用的是Date.now这是一个函数的引用,是活的,每次调用的时候都会生成一次,这样就可以了。

    图片.png

    这里举一个小例子就好,我们在使用API进行操作数据库的时候,一定要记得return,否则会报错响应头重写了!具体原因不太清楚,待探索…...

    图片.png

    END!

    相关文章

      网友评论

          本文标题:express+mongoose小记

          本文链接:https://www.haomeiwen.com/subject/lspajftx.html