Node+mongoDB搭建后台全过程最近基于vue-cil搭建了一个前端项目,用express+mongoose搭建了后台,遇到了很多问题。总结博客如下,有什么不对的地方,请大家批评指正^^_^!mongodb是一个NoSQL非关系数据库。mongoose是mongodb的一个对象模型工具。是基于node-mongodb-native开发的mongodb的nodejs驱动,可以在异步环境下执行。同时它也是一个mongodb操作的对象模型库,封装了mongodb增删改查文档等常用方法,让nodejs操作mongodb数据库更加简单。一、Mac下mongodb的安装与配置1、安装mongodb:brewinstallmongodb2。安装成功后,启动mongodbmongod3,执行mongod,启动mongodb失败。显示如下:原因:在启动mongodb之前,必须先新建一个mongodbdefaultdatawrite进入目录:sudomkdir-p/data/db给新建的数据库目录赋予权限sudochown-Rusername/data如下图所示:4.再次启动mongod5。如果启动成功,可以通过http访问数据库,mongodb使用27017端口,所以在浏览器中打开http://localhost:27017,会出现如下图的提示,表示连接成功是成功的。默认情况下,当shell关闭时,mongodb停止运行。如果想后台运行,只需要在启动的时候加上--fork函数即可。总结:mongod用于连接mongodb数据库服务器,即server端。mongo用于启动MongoDBshell,它是mongodb的命令行客户端。2.安装MongoDB可视化工具RoboMongo下载地址:https://robomongo.org/download3.连接数据库dbase.jsletmongoose=require('mongoose');/***connect*/mongoose.connect('mongodb://127.0.0.1:27017/learning',{useNewUrlParser:true});/***连接成功*/mongoose.connection.on('connected',function(){console.log('Mongoose连接成功');});/***连接异常*/mongoose.connection.on('error',function(err){console.log('Mongoose连接错误:'+err);});/***连接断开*/mongoose.connection.on('disconnected',function(){console.log('Mongooseconnectiondisconnected');});module.exports=猫鼬;4.启动节点服务server.jsconstfs=require('fs')constpath=require('path')constexpress=require('express')constsession=require('express-session')constbodyParser=require('body-parser')constapp=express()require('./dbase')app.use(bodyParser.json())//解析json类型的请求体app.get('*',function(req,res){res.sendFile(path.join(__dirname,'../学习于g/index.html'));})app.listen(process.env.PORT||8000,function(){console.log("Listenport:8000...")});总结:问题:Startup节点服务连接数据库时报错如下图:解决:在mongoose5.x版本中,连接数据库时不再使用{useMongoClient:true},but{useNewUrlParser:true}5.vue-cil构建项目跨域问题Vue-cli创建的项目可以通过修改proxyTable接口直接使用Node.js代理服务器实现跨域请求。在vue-cli项目中config文件夹下的index.js配置文件中,修改dev里面的proxyTable:{}项,如下:proxyTable:{'/api':{//代理地址target:'http://127.0.0.1:8000/',//需要代理的地址changeOrigin:true,//是否跨域secure:false,pathRewrite:{'^/api':'/'//接口地址本身没有'/api'这样的通用前缀,所以需要重写,有的话去掉}}}重启项目npmrundev,在接口前加“/api”实现跨域要求
