用Node.js+express+cloud MongoDB Atlas建立API接口

3,333 阅读4分钟

介绍

  • 本文用 node.js express框架连接 cloud MongoDB Atlas 搭建API接口
  • 本文侧重于cloud MongoDB Atlas

创建项目

  • 创建一个文件夹 用VScode编译器打开
  • 选择文件夹在终端打开

在终端中输入 npm init 然后一直回车 最后确认

node.js 安装 express 输入npm install express nodemon回车

  • 完成后打开 package.json 检查是否安装成功 安装成功如下图:

  • 安装成功后 修改 scripts 修改为 "start": "nodemon app.js"

建立API端口

在当前目录下 创建 app.js 文件

const express = require("express")
const app = express()

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

//端口
app.listen(3000)

保存 在终端中 输入 npm start 打开浏览器 打开 https://localhost:3000

端口建立完成

  • node.js安装 mongoDB 在终端中ctrl+c 终止批处理操作 再输入 npm install mongoose 回车安装

注册与创建cloud MongoDB Atlas

点我进MongoDB官网

  • 点击右上角 TryFree 注册一个新用户可以获得500m的免费云数据
  • 正常填写邮箱密码注册完成进入主页
  • 选择 FREE 点击 Create a Starter Cluster
  • 随便选择一个亚洲节点 我这里是选择taiwan的
  • 给你项目起个名称

  • 完成后点击下方的Create Cluster创建

  • 页面会自动跳转 然后等待7-10分钟 等项目初始化完成
  • 完成之后显示如下界面

  • 点击右侧栏Network Access给项目 再点击 +ADD IP ADDRESS添加接入IP
  • 我这边选择所有IP都可以接入 ALLOW ACCESS FROM ANYWHERE 再确认Confirm

  • 需要在注册邮箱确认 所有IP都可以接入 点击邮箱的连接即可确认

  • 确认完成状态:

  • 点击右侧栏Database Access 再点击 +ADD NEW USER添加接入用户
  • 填写用户名 密码 和选择权限后添加

  • 点击右侧栏Clusters 再点击 COLLECTIONS

  • 选择添加我的数据库 填写好后创建 创建成功
    点击 右侧栏Clusters 返回主页 点击 CONNECT 连接数据
    点击 Copy

  • 修改为user123的密码 admin修改为创建的数据库名
  • 例:
mongodb+srv://user123:user123@cluster0-kxpls.azure.mongodb.net/userDB?retryWrites=true&w=majority
  • node.js 安装 doenv 输入 npm install doenv 回车安装
  • 安装完成后 在根目录添加文件.env在文件中写入连接数据库的url
DB_CONNECTION=mongodb+srv://user123:user123@cluster0-kxpls.azure.mongodb.net/userDB?retryWrites=true&w=majority
  • 连接数据库 在app.js中写入
const mongoose = require("mongoose")
require("dotenv/config")

mongoose.connect(process.env.DB_CONNECTION,{ useUnifiedTopology: true,useNewUrlParser: true },() => {
  console.log("connect DB!")
})

数据库的增删改查操作

  • 在根目录下创建routes文件夹 在文件加下创建posts.js文件来统一处理数据库增删改查代码的编写
  • 在根目录下创建models文件夹 在文件加下创建Post.js文件来处理数据库键名添加

  • posts.js文件中 引入 models文件下的Post.js
const Post = require('../models/Post')
  • Post.js中写入 数据库测试的键名
const mongoose = require('mongoose')
const PostSchema = mongoose.Schema({
    title:{
        type:String,
        required:true
    },
    connect:{
        type:String,
        required:true
    },
    date:{
        type:Date,
        dafault: Date.now
    }
})
module.exports = mongoose.model('Posts' , PostSchema)
  • app.js文件中 引入 routes文件下的posts.js
const postRoute = require('./routes/posts')
app.use('/posts',postRoute)

-在posts.js文件下写入增删改查代码

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

//查询数据库所有数据
router.get('/', async (req, res) => {
    try {
        const finePosts = await Post.find()
        res.json(finePosts)
    } catch (err) {
        res.json({ message: err })
    }
})
//添加数据
router.post('/', async (req, res) => {
    const post = new Post({
        title: req.body.title,
        connect: req.body.connect
    })
    try {
        const savePost = await post.save()
        res.json(savePost)
    } catch (err) {
        res.json({ message: err })
    }
})
//查找对应id的数据
router.get('/:postId', async (req, res) => {
    try {
        const findPost = await Post.findById(req.params.postId)
        res.json(findPost)
    } catch (err) {
        res.json({ message: err })
    }
})
//删除数据
router.delete('/:postId', async (req, res) => {
    try {
        const removePost = await Post.remove({ _id: req.params.postId })
        res.json(removePost)
    } catch (err) {
        res.json({ message: err })
    }
})
//修改数据
router.patch('/:postId', async (req, res) => {
    try {
        const updatePost = await Post.updateOne({ _id: req.params.postId }, { $set: { title: req.body.title } })
        res.json(updatePost)
    } catch (err) {
        res.json({ message: err })
    }
})

module.exports = router
  • 注意:若需要在服务端上正常运行还需要安装以下依赖
  • node.js 安装 doenv 输入 npm install body-parser 回车安装
  • node.js 安装 doenv 输入 npm install cors 回车安装
  • app.js引入body-parsercors
const bodyParser = require('body-parser')
const cors = require('cors')
app.use(cors())
app.use(bodyParser.json())

测试

  • 在终端中npm start启动API
  • API测试软件 postman
  • 插入数据:

  • 查询所有数据:
  • 查询id为5d9caaeec6c67361e0ac3f1a的数据:
  • 更改id为5d9caaeec6c67361e0ac3f1a的数据:
  • 删除id为5d9caaeec6c67361e0ac3f1a的数据:
    -浏览器访问数据:

  • 控制台:

项目源码

点我查看源码

未经作者允许禁止转载!