Node.js连接MongoDB,vue的axios做代理

安装Mongoose

Mongoose是提供了对数据库的增删改查的api

打开node.js的文件夹将mongoose安装到依赖中

$ cnpm i mongoose –save

Node.js路由设置

在node.js项目下新建一个文件夹models,然后新建一个文件叫goods.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var mongoose = require('mongoose');
//获取mongoose的Schema对象
var Schema = mongoose.Schema;
//定义一个模型,下面是数据格式,需要根据这个来定义
var parsensSchema = new Schema({
"name":String,
"age":Number
});
//输出出去
//(名字,模型,集合)
module.exports = mongoose.model('Good',parsensSchema)
//module.exports = mongoose.model('Good',parsensSchema,'goods')//最后一个参数是需要连接的数据库,因为前面的Good会自动去查找,所以这里不用设置也行,但是数据库是list,那么需要写进去

routes下新建一个路由配置goods.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Goods = require('../models/goods')
//连接数据库
mongoose.connect('mongodb://127.0.0.1:27017/demo1')
//监听连接成功
mongoose.connection.on('connected', function(){
console.log('success');
})
//监听连接失败
mongoose.connection.on('error', function(){
console.log('error');
})
//监听连接断开
mongoose.connection.on('disconnected', function(){
console.log('dis');
})
//获取路由
router.get('/',function(req,res,next){
//返回数据,成功,失败
Goods.find({},(err,doc)=>{
//格式自定
if(err){
res.json({
status:'1',
msg:err.message
})
}else{
res.json({
status:'0',
msg:'成功',
result:{
count:doc.length,
list:doc
}
})
}
});
})
//输出出去
module.exports = router;

最后在入口文件app.js中去把routes下的goods.js配置进去

1
2
3
4
5
//先获取
var goods = require('./routes/goods')
//再添加路由
app.use('/goods', goods);

在启动前,先确认自己的数据库的名字和集合名字是否和代码中对的上。你的MongoDB启动了吧

下面是我数据库的结构

如果没有报错,那就通过localhost:3000/goods打开,就可以看见查找到的数据了

Vue中代理访问

因为在开发模式下,vue的端口一般是8080,而node.js的是3000,js是不能跨域的,所以需要代理

早期我还用的php代理,还是因为自己太菜

首先自己准备一个vue项目,安装axios的插件

$ cnpm i axios –save

然后到你需要发送请求的页面下,写一个axios的请求,我随便写了一个

1
2
3
4
5
6
7
methods:{
get(){
axios.get('/goods').then((res)=>{
console.log(111);
})
}
}

然后打开config文件夹,找到里面的index.js文件,修改一下

1
2
3
4
5
6
proxyTable: {
//访问/goods这个接口的时候,使用代理到node.js的端口下去访问/goods
'/goods':{
target: 'http://localhost:3000'
}
}

如果你已经打开了vue项目,需要重新开启一下

$ npm run dev

让你的axios方法执行起来


我,曼妥思,打钱