使用Node + Express + mongodb 搭建API服务端

1,410 阅读1分钟

这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战

使用Node + Express + mongodb 搭建API服务端

创建项目

mkdir <project-name>

初始化项目

npm init -y # npm package.json 初始化
yarn add express # 安装 express

创建入口文件及初始化配置

mkdir server.js

引入express及express初始化配置

// server.js
const express = require("express"); // 引入express
const app = express(); // express初始化

app.get("/",(req, res)=>{ // 创建路由接口
    res.send("Hello Express")
})

const port = process.env.PORT || 5000; // 设置端口号

app.listen(port, ()=>{ //启动服务,监听端口
    console.log("Server is Running on http://localhost:${port}")
})

配置package.json 启动脚本命令

// package.json

"scripts": {  "start": "node server.js"},
"server": "nodemon server.js" // 安装 nodemon 启动热部署

使用 Mongoose 连接 Mongodb

yarn add mongoose
//@Server.js
const express = require("express");

const mongoose = require("mongoose");
mongoose.set('useFindAndModify', false);

const app = express();

// DB Config 连接数据库
const db = require("./config/keys").mongoURI;// 创建配置项目录config, 存放静态常量
mongoose.connect(db, {
  user: <usernmae>,
  pass: <password>,
  useNewUrlParsertrue,
  useUnifiedTopologytrue
}).then(res=>{
  console.log(`MongoDB connected!`)
}).catch(err=>{
  console.log(`MongoDB connected Failed: \n ${err}`)
})

创建 配置文件

touch config/keys.js
// @config/keys.js
module.exports = {
    mongoURI: "mongodb://127.0.0.1:27017/<dbname>",
};

创建模型 Schema

创建目录 models 存放模型

新建用户模型 User.js文件

//  User.js
const mongoose = require('mongoose');
const Schema =  mongoose.Schema;

const UserSchema = new Schema({    
    username:{        
        type: String,      
        require: true   
    },  
    password: {      
        type: String,      
        require: true   
    }, 
    data: {        
        type: Date,        
        default: Date.now()   
    }
});
module.exports = User = mongoose.model('user', UserSchema);

创建Route Api

创建目录 routes/api

创建用户路由文件 user.js

// @routes/api/users.js
const express = require('express'); //引入express
const router = express.Router();// 使用express Router
const User = require("../../models/User"); // 引入User模型

// 新增用户
router.get("/add", (req, res) => {   
    const newUser = new User({    
        username: "test",      
        password: "test"   
    })    
    newUser.save().then(user => {      
        res.json({          
        msg: "用户新新成功",          
        data: user      
        })   
    }).catch(err=>{      
        console.log(err);  
    })
});

module.exports = router; // 导出路由模块

在 server.js 中引入

//@server.js
const users = require('./routes/api/users'); // 导入users路由
// ....
app.use('/api/users', users); // 配置users路由并使用

express访问静态资源

创建可范文的静态资源目录

// @server.js
const path = require('path'); // 导入path

app.use(express.static(path.join(__dirname, 'public'))); // 指定静态资源目录

// localhost:端口号/文件名称 直接访问

route api 返回静态页面

const fs = require("fs");

app.get("/", (req,res)=>{   
    res.writeHead(200,{'Content-Type':'text/html'}); 
        fs.readFile('./public/index.html','utf-8',function(err,data){      
            if(err){           
                throw err ;  
             }       
             res.end(data);  
        });
});