首先在models中创建一个js文件用来连接MongoDB数据库

const mongoose = require("mongoose");

//step1: 通过mongoose连接mongodb 27017
mongoose.connect("mongodb://127.0.0.1:27017/test",{
useNewUrlParser:true,
useUnifiedTopology:true
});

  //step2: 监听连接的信息
 mongoose.connection.on("connected",()=>{
 console.log("mongodb is connected")
 })

 module.exports = mongoose;

在数据库连接成功继续在models中创建一个js文件用来操作数据库,我这里是用来做登录和注册用,所以只用到了一些简单的方法

 const mongoose = require("./mongoModel");
 const Schema = mongoose.Schema;

 let userSchema = new Schema({
 mobile:{type:String},
 id:{type:String},
 pwd:{type:String}
 })

 let UserModel = mongoose.model("users",userSchema) 

其实这个和之前用php连mysql差不多,都是通过连接数据库,然后连接数据库中的表,来查询数据,通过查询返回的结果,来实现账号密码是否正确。

 module.exports = {
 checkUser(where,cb){  //这是一个注册查询的方法,只需要查询账号是否存在就好
 return UserModel.find({id:where}).exec(cb)
 },
  regUser(where,cb){
  return UserModel.find(where).exec(cb)  //这是登陆验证方法,要查询账号和密码都是否存在
 },
 addUser(item,cb){   //这是注册是添加新用户的方法
 let user = new UserModel(item);
 user.save(cb);
 }
}

数据库操作方法创建以后,还需要创建路由,所以在router中分别创建注册和登陆的模块,其实你也可以写在一起的,写两个耳机路由,都差不多。

这个是登录的路由

const express = require('express');
const router = express.Router();
const userModel = require("../models/userModel");

router.all("*",(req,res,next)=>{
res.header("Access-Control-Allow-Origin","*");
res.header("Access-Control-Allow-Methods","PUT,GET,POST,DELETE,OPTIONS");
res.header("Access-Control-Allow-Headers","X-Requested-With");
res.header("Access-Control-Allow-Headers","Content-Type");
if(req.method=="OPTIONS")  res.send(200); /*让option请求快速返回*/
else next();
});

 router.post('/',(req, res)=> {
let user = req.body;
 userModel.regUser(user,(err,result)=>{
 if(result.length>0){
     res.json({
         code:200,
         msg:"成功了"
     })
 }else{
     res.json({
         code:400
     })
  }
  })
 });
 module.exports = router;

这个是注册的路由

const express = require('express');
const router = express.Router();
const userModel = require("../models/userModel");

router.all("*",(req,res,next)=>{
res.header("Access-Control-Allow-Origin","*");
res.header("Access-Control-Allow-Methods","PUT,GET,POST,DELETE,OPTIONS");
res.header("Access-Control-Allow-Headers","X-Requested-With");
res.header("Access-Control-Allow-Headers","Content-Type");
if(req.method=="OPTIONS")  res.send(200); /*让option请求快速返回*/
else next();
// res.header("Access-Control-Allow-Origin","*");
// //允许的header类型
// res.header("Access-Control-Allow-Headers","content-type");
// //跨域允许的请求方式 
// res.header("Access-Control-Allow-Methods","DELETE,PUT,POST,GET,OPTIONS");
// if (req.method.toLowerCase() == 'options')
//     res.send(200);  //让options尝试请求快速结束
// else
//     next();

});

router.post('/',(req, res)=> {
let user = req.body.id;
let newUser = req.body
console.log(user);
userModel.checkUser(user,(err,result)=>{
console.log(result)
if(result.length>0){
    res.json({
        code:200,
        msg:"存在"
     })
  }else{
    userModel.addUser(newUser,(err,result)=>{
        res.json({
            msg:"注册成功"
         })
      })
 }
 })
 });
module.exports = router;

两个路由都创建以后,只需要在app.js中创建就可以使用了,我的登录功能可以正常使用,注册我虽然加了请求头,但是还是出现了一个很烦的跨域问题,暂时还是没有解决,我也在想办法解决,解决以后我也会继续写在后面的博客里面。马上两点了,晚安。

Last modification:November 12th, 2019 at 08:55 am
来杯coffee吧