node.js+express搭建简单后台,路径分文件配置,mongodb更改数据

1.node.js+express搭建后台


新建一个index.js文件

var express = require('express');
var csdn = express();//这里的csdn可以换名字,一般脚手架里都是app命名
var router = express.Router();

router.post('/register',function(req,res){
	//这里的post取决于前端页面的ajax请求方式,后面是自己定义了一个路径
})
csdn.use('/',router);//挂载到主路径上
csdn.listen(8000);//监听端口号8000

现在已经搭建好一个端口号为8000的本地服务了,supervisor index 启动服务 前端页面通过http://localhost:8000/register就可以走到搭建好的路由路径下

注意这里的localhost是主机ip,如果你是在别的电脑上访问这个服务,就需要改成自己的IP地址

2.链接数据库

链接数据库

var mongodb = require('mongodb').MongoClient;
var db_str="mongodb://localhost:27017/csdn";//链接数据库,最后这个csdn只是建立的一个数据库
var ObjectId = require("mongodb").ObjectId;//这里是为了方便下面通过id增删改查,进行转换

操作数据

router.post('/register',function(req,res){
	mongodb.connect(db_str,(err,database)=>{    //链接数据库
		database.collection('name',(err,coll)=>{   //链接集合,如果数据库里没有该集合则创建一个新的集合
			coll.insert({name:'111'});   //插入一条数据,name:111
			res.send('返回');           //这个是返回给前端的数据,可以在前端接收,这个返回的数据可以是通过查询数据库得到的,
		})
	})
})


/*类似这样
router.get('/user',(req,res)=>{
	mongodb.connect(db_str,(err,database)=>{
		database.collection('wxd',(err,coll)=>{
			coll.find({}).toArray((err,data)=>{
				res.send(data);             //这个就是查询到的数据返回给前端
			})
		})
	})
})
*/

然后前端页面写ajax交互就可以从与后台数据进行交互

//我这里用的是jquery的,需要引入jquery.js,如果是在脚手架里使用需要引入依赖 npm i jquery -D
$.ajax({
          type:"post",
          url:"http://localhost:8000/register",
          success:function(data){
             console.log(data)   //这个data打印出来就是上面后端返回的数据——“返回”
          }
})

3.跨域问题

一般前后端分离端口号都是不一样的,这就需要解决跨域问题

当你运行的时候会报这样一条错误

Access to XMLHttpRequest at 'http://localhost:8000/register' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

这里只需要在后端路径里加上一句res.header('Access-Control-Allow-Origin','*'),即可,配好了就是这样

router.post('/register',function(req,res){
    res.header('Access-Control-Allow-Origin','*')
	mongodb.connect(db_str,(err,database)=>{    
		database.collection('name',(err,coll)=>{   
			coll.insert({name:'111'});  
			res.send('返回');          
		})
	})
})

4.post传参转换问题

写好之后,进行了实验,插入数据表没有问题,就开始传参数,用了get传参,后台req.query没有问题

然后用了post传参,后台用req.bod进行接收,但是无效。

在后台打印req.body,显示undefined,这是因为没有对数据表进行解析。

在index.js里配置如下代码。

var bodyParser = require('body-parser'); 
csdn.use(bodyParser.json()); 
csdn.use(bodyParser.urlencoded({ extended: true }));

5.将路径配置到不同文件

就像session一样,index,user分开,不会拥挤在一下。

而我们多人开发的时候,也希望大家各自操作自己的路径,也不会互相干扰。

但是启动服务始终都是我们最开始建立的文件,该怎么启动多个?

主要思路就是把其他文件暴露出来,主文件接收,这样启动就可以了。

现在新建一个indexs.js,按照上面将链接好数据库,路由,最后暴露出来,主要这里不在需要监听端口号;

在indexs.js末尾暴露  module.exports = router;然后在index.js里写入如下代码。

var indexsrouter= require('./indexs');//在index.js里进行接收
csdn.use('/indexs',indexsRouter);//挂载


router.post('/my',function(req,res){ 
	//配置一个名为my的路径
})

然后在前端就可以进行请求,地址为http://localhost:3000/indexs/my

这里与最开始的多了indexs,是因为这里配置的就是indexs

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值