vue-cli3 + express + mongodb小型全栈项目(一)

本文档介绍了如何使用Vue CLI3、Express和MongoDB搭建一个小型全栈项目。从Express服务器设置开始,逐步讲解连接MongoDB数据库、创建路由、注册与登录接口、JWT验证、增加用户身份字段、数据接口的实现,最后涵盖获取、编辑和删除数据的接口操作。
摘要由CSDN通过智能技术生成

1、express搭建服务器

1、新建一个项目文件夹,node_app,进去文件夹后,使用命令npm init 初始化项目。
在这里插入图片描述
注意:这里将入口文件改为了server.js.
2、安装express,全局安装nodemon。
3、项目根目录新建server.js文件,内容如下:

const express = require('express');
const app  = express();

const port = process.env.PORT || 5000;

app.get('/',(req,res)=>{
   
    res.send("hello express")
})

app.listen(port,()=>{
   
    console.log(`Server running on port ${
     port}`);
})

4、修改package.json文件 ,增加两个脚本命令。

 "scripts": {
   
    "server": "nodemon server.js",
    "start":"node server.js"
  },

5、浏览器打开http://localhost:5000/。
在这里插入图片描述
说明express服务器搭建成功了。

2、连接MongoDB数据库

1、下载mongoose
2、根目录新建config文件夹 新建keys.js文件
keys.js文件内容如下:

module.exports = {
   
    mongonURI:"mongodb://localhost:27017/test"
}

3、在server.js文件中添加如下代码

const mongoose = require('mongoose')


const users = require('./routers/api/users')


const db = require("./config/keys").mongonURI

mongoose.connect(db)
    .then(()=>{
   
   	 		console.log("mongodb connet"); 
		})
	.catch(err=>console.log(err))

在这里插入图片描述
表示连接成功。
4、创建数据模型
根目录下新建models文件夹 新建User.js文件
User.js文件内容如下

const mongoose = require("mongoose")

const Schema = mongoose.Schema;

const UserSchema = new Schema({
   
    name:{
   
        type:String,
        required:true
    },
    email:{
   
        type:String,
        required:true
    },
    password:{
   
        type:String,
        required:true
    },
    avatar:{
   
        type:String
    },
    date:{
   
        type:Date,
        default:Date.now
    }
})
module.exports = User = mongoose.model('users',UserSchema)

3、创建路由

根目录下新建routerswen文件夹,新建api文件夹,新建users.js 文件
新建users.js 文件内容如下:

const express = require("express");

const router = express.Router();

// get请求 /api/users/test
router.get('/test',(req,res)=>{
   
    res.json({
   
        msg:"test msg"
    })
})

module.exports = router;

server.js文件添加如下代码


const users = require('./routers/api/users')
app.use('/api/users',users)

浏览器打开http://localhost:5000/api/users/test
在这里插入图片描述

4、创建注册接口并存储到数据库

4.1 安装body-parser,用于解析POST请求的body数据。然后在server.js中添加如下代码:

const bodyParser = require('body-parser')
// ...省略已有代码
// 使用 body-parser 中间件
app.use(bodyParser.urlencoded({
   extended:false}))
app.use(bodyParser.json())

4.2 安装bcrypt,用于加密密码。
4.3 安装gravatar,用于生成头像的。全球公认头像gravatar
在此网站可以注册一个账号,并上传头像。

4.4 在user.js文件中添加如下代码:

const bcrypt = require('bcrypt')
const gravatar = require('gravatar')


router.post('/register',(req,res)=>{
   
   console.log(req.body);
   //查询数据库中是否有邮箱
   User.findOne({
   email:req.body.email}).then(user =>{
   
       if (user) {
   
           return res.status(400).json({
   email:"该邮箱已经被注册"})
       }else{
   
           const newUser = new User({
   
               name:req.body.name,
               email:req.body.email,
               avatar:gravatar.url(req.body.email,{
   s:'200',r:'pg',d:'mm'}),//拉取头像 如果没有在全球公认头像网站上注册的话将会生成一个默认的头像
               password:req.body.password
           })
           // 加密密码
           bcrypt.genSalt(10,(err,salt)=>{
   
            bcrypt.hash(newUser.password,salt,(err,hash)=>{
   
                   if(err) throw err;
                   newUser
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值