近期基于 vue-cil 搭建前端项目, express + mongoose 搭建后台,遇到了很多问题,总结博客以下,有什么不正确的地方,请你们批评指正^ _ ^!html
mongodb 是 NoSQL 非关系型数据库。 mongoose是 mongodb 的一个对象模型工具,是基于 node-mongodb-native 开发的 mongodb 的 nodejs 驱动,能够在异步的环境下执行。同时它也是针对 mongodb 操做的一个对象模型库,封装了 mongodb 对文档的一些增删改查等经常使用方法,让nodejs操做 mongodb 数据库变得更加容易。
一、 安装mongodb:前端
brew install mongodb
二、安装成功以后,启动 mongodbvue
mongod
三、执行 mongod ,启动 mongodb 失败,显示以下:node
缘由 : 启动 mongodb 以前,要先新建一个mongodb默认的数据写入目录:mongodb
sudo mkdir -p /data/db
给刚才新建的数据库目录赋予权限vue-cli
sudo chown -R 用户名 /data
以下图所示:shell
四、再次启动数据库
mongod
五、若启动成功,能够经过http访问该数据库,mongodb使用了27017端口,所以在浏览器中打开 http://localhost:27017
出现以下图所示提示,即说明链接成功。默认的状况下,关闭shell,mongodb就中止运行了 若是想在后台运行,启动时只需添加 --fork函数便可express
小结:npm
mongod 是用来链接到mongodb数据库服务器的,即服务器端。 mongo 是用来启动MongoDB shell的,是mongodb的命令行客户端。
下载地址:https://robomongo.org/download
dbase.js
let mongoose = require('mongoose'); /** * 链接 */ mongoose.connect('mongodb://127.0.0.1:27017/learning',{useNewUrlParser: true}); /** * 链接成功 */ mongoose.connection.on('connected', function () { console.log('Mongoose connection succuss' ); }); /** * 链接异常 */ mongoose.connection.on('error',function (err) { console.log('Mongoose connection error: ' + err); }); /** * 链接断开 */ mongoose.connection.on('disconnected', function () { console.log('Mongoose connection disconnected'); }); module.exports = mongoose;
server.js
const fs = require('fs') const path = require('path') const express = require('express') const session = require('express-session') const bodyParser = require('body-parser') const app = express() require('./dbase') app.use(bodyParser.json()) //解析json类型的请求体 app.get('*', function (req, res) { res.sendFile(path.join(__dirname, '../Learning/index.html')); }) app.listen(process.env.PORT || 8000, function () { console.log("Listen port:8000...") });
小结:
问题: 启动node
服务链接数据库时,报错以下图所示:
解决办法:在 mongoose 5.x 版本中,链接数据库时,再也不使用 {useMongoClient: true}),而是 { useNewUrlParser: true }
Vue-cli 建立的项目,能够直接利用 Node.js 代理服务器,经过修改proxyTable接口实现跨域请求。在vue-cli项目中的config文件夹下的index.js配置文件中,修改 dev 里面的proxyTable: {}
项,以下所示:
proxyTable: { '/api': { //代理地址 target: 'http://127.0.0.1:8000/', //须要代理的地址 changeOrigin: true, //是否跨域 secure: false, pathRewrite: { '^/api': '/' //自己的接口地址没有 '/api' 这种通用前缀,因此要rewrite,若是自己有则去掉 } } }
重启项目npm run dev ,接口前加上“/api”便可实现跨域请求