使用express框架+mongodb快速搭建后端项目

首先node环境不用多说

然后我们使用express脚手架 express-generator

快速创建项目目录

全局安装express-generator

npm i -g express-generator
复制代码

接着使用express命令创建项目, programnem是你的项目文件夹名

express <programname>
复制代码

然后我们就有了一个完整的express项目目录,进入到项目文件夹->

## 安装依赖
npm install

## 运行项目
npm run start
复制代码

浏览器输入localhost:3000,可以看到如下界面

但是我们发现,如果我们修改了一下文件,页面并不会发生改变,必要要重新npm start一下才行,这是因为,start不是热更新。

这时候我们可以安装nodemon依赖,使用nodemon来运行我们的服务

安装nodemon,并使用

npm i -S nodemon
复制代码

打开package.json

旧代码
"scripts": {
  "start": "node ./bin/www"
},

新代码"scripts": {
  "dev": "nodemon ./bin/www",
  "start": "node ./bin/www"
},

增加了 ——> "dev": "nodemon ./bin/www",
复制代码

此时我们运行  

npm run dev
复制代码

发现修改代码后,页面内容会发生改变了,不需要在重新运行了。

上面说的这么多,发现有点啰嗦了,但是我想尽可能的说的清楚一些。

接下来我要加快速度了。

目录结构修改

我喜欢将routes文件夹放在一个单独的src文件夹下面,在src下面一般我还会建一些其他的文件夹,如下图

对比一下,我还在外面新建了config文件夹,存放公共配置,比如jwt 的签名,小程序登录的appid和秘钥等等。

安装并使用mongodb数据库

以上是目录结构建完了,接下来是数据库链接,模型操作

安装mongoose依赖
npm i -S mongoose
复制代码

在db文件夹下,新建mongodb.js

// 引入 mongoose 
const mongoose = require('mongoose')

// 连接数据库,自动新建 ExpressApi 库
mongoose.connect('mongodb://localhost:27017/ExpressApi', {
  useNewUrlParser: true, // 避免“不建议使用当前URL字符串解析器”
  useCreateIndex: true, // 解决MongoDB弃用警告
  useUnifiedTopology: true, // 解决连接报错问题
  useFindAndModify: false
})

module.exports = mongoose
复制代码

接着我们在model文件夹下新建一个模型文件,比如User.js

这里建议模型文件用大驼峰命名

User.js

// 引入mongodb
const mongoose = require('../db/mongodb')
const bcrypt = require('bcrypt')
// 建立用户表
const UserSchema = new mongoose.Schema({
    username: {
        type: String,
        unique: true
    },
    password: {
        type: String,
        set(val){
            return bcrypt.hashSync(val, 10)
        },
        select: false
    },
    createTime: {
        type: Date,
        default: Date.now
    },
    updateTime: {
        type: Date,
        default: Date.now
    }
})

// 建立用户数据库模型
const User = mongoose.model('User', UserSchema)
module.exports = { User }
复制代码

最基本的用户模型一般包括用户名和密码,以及创建时间,更新时间,

这里还使用了bcrypt 密码加密  

npm i -S bcrypt
复制代码

数据库模型创建好以后,我们在路由中就可以使用了

比如我们在 routes/users.js中使用

var express = require('express');
var router = express.Router();
const { User } = require('../model/User')

// 用户注册
router.post('/register', async (req, res, next) => {
  const user = await User.create({
    username: req.body.username,
    password: req.body.password
 }) 
 res.send(user)
});

// 获取用户信息
router.get('/info', async (req, res, next) => {
  const user = await User.findOne({
    _id: req.user_id  })
  res.send({
    code: 200,
    data: user
  })
})

// 获取用户列表
router.get('/list', async(req, res, next)=>{
  const user = await User.find()
  res.send({ 
   code: 200,
    msg: '获取成功',
    data: user
  })
})

module.exports = router;
复制代码

以上就是简单的mongodb数据库的使用

为了验证我们的代码确实有效果,我们可以使用接口调试工具,进行测试

这里我使用了vscode的插件REST Client进行测试,

vscode搜索插件REST Client 并安装

然后再项目的根目录下新建.http文件

// test.http@url=http://localhost:3000

### 获取用户列表
get {
   
   {url}}/users/list

### 注册账号
POST {
   
   {url}}/users/register
Content-Type: application/json

{
  "username": "user3",
  "password": "123456"
}
复制代码

以上我们就有了一个简单的基于express+mongodb搭建的基础项目了,这里只举例了增加和查询的数据库操作。

后续的开发,其实就是实现业务功能的code了,其实还是比较简单的,不会的也可以去百度一下,网上相关的教程也是很多的。

作者:禅yi下
链接:https://juejin.cn/post/6931253375195414535
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/qq_45530512/article/details/130422927