【前端福利】node.js + express + mongodb 实现后端接口 时光大魔王

包含:前言、安装 node.js环境、安装 express、依赖安装、配置数据库、编写接口、服务器配置
原文地址:https://timebk.cn/index.php/2022/08/25/84.html

原创文章,请勿抄袭!思维有限,敬请指正!

一个合格的前端程序员,要立志抢UI和后端的饭碗![滑稽]

安装 node.js环境

引言官网:Node.js® 是一个基于 Chrome V8 引擎 的 JavaScript 运行时环境。

官网:https://nodejs.org/zh-cn/

下载链接:https://nodejs.org/zh-cn/download/

备注:根据系统环境选择下载包,版本推荐长期支持版

安装教程:一直 下一步next 即可。

安装 express

官网:https://expressjs.com/zh-cn/

教程步骤:

一、新建一个文件夹

知识扩展:命令方式 mkdir myapp

二、进入该文件夹

知识扩展:命令方式 cd myapp

三、打开终端,运行 express应用程序生成器

命令 npx express-generator

依赖安装

一、【必装】nodemon 热重载

命令:npm i nodemon

官方文档:https://www.npmjs.com/package/nodemon

二、【必装】ykt-mongo 连接并实现mongodb数据库的操作

命令 npm i ykt-mongo

官方文档:https://www.npmjs.com/package/ykt-mongo

三、【选装】xmlhttprequest 网络请求,用于模拟浏览器 XMLHttpRequest 对象

官方文档:https://www.npmjs.com/package/xmlhttprequest

[/collapse]

配置数据库

一、在 package.json 里 添加

"db": {
  "url": "mongodb://localhost:数据库端口(默认27017)",
  "dbname": "数据库名称"
}

扩展知识:需要放服务器用其数据库,而且数据库设置账号和密码的话,url 的格式:

mongodb://数据库名称:数据库密码@localhost:数据库端口

二、在 文件夹routes 里的 index.js 的上面添加

var db = require("ykt-mongo");// 连接并实现mongodb数据库的操作,必须添加
var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;// 原生网络请求,选择性添加

编写接口

文件夹routes 里的 index.js 编写

// 示例
// 获取云端数据
router.get('/cloudGet', function (req, res, next) {// /cloudGet 指接口路径
  db.collection("cloud").find(req.query, function (items) {// cloud 指集合(或表)的名称
    if (items.length >= 0) {// 
      res.send({
        code: 200,
        data: items,
        msg: "成功"
      })
    } else {// 
      res.send({
        code: -1,
        msg: "失败"
      })
    }
  })
})

接下来是增删改查的一些示例

官方文档:https://expressjs.com/zh-cn/4x/api.html#router

// 注意:只提供简单常用的基本语法,更多逻辑和安全验证请自行发挥或查询官方文档

// 添加
router.post('/add', function (req, res, next) {
  db.collection("user").insert(req.body, function (item) {
    if (item.result.ok == 1 && item.result.n == 1) {
      res.send({
        code: 200,
        msg: "成功"
      })
    } else {
      res.send({
        code: -1,
        msg: "失败"
      })
    };
  })
})

// 删除
router.delete('/del', function (req, res, next) {
  db.collection("user").remove({_id}, function (items) {
    if (items.result.n == 1 && items.result.ok == 1) {
      res.send({
        code: 200,
        msg: "成功"
      })
    } else {
      res.send({
        code: -1,
        msg: "失败"
      })
    };
  })
})

// 改,这里用的方式是将新的数据进行设置更新
router.put('/change', function (req, res, next) {
  let newObj = JSON.parse(JSON.stringify(req.query));
  db.collection("goodsList").update({ _id }, { $set: newObj }, function (items) {
    if (items.result.n == 1 && items.result.ok == 1) {
      res.send({
        code: 200,
        msg: "成功"
      });
    } else {
      res.send({
        code: -1,
        msg: "失败"
      })
    };
  })
})

// 查
router.get('/check', function (req, res, next) {
  db.collection("user").find(req.query, function (items) {
    if (items.length >= 0) {
      res.send({
        code: 200,
        data: items,
        msg: "成功"
      })
    } else {// 
      res.send({
        code: -1,
        msg: "失败"
      })
    }
  })
})

注意:也可以自行在 文件夹routes 里新建js文件,具体方法看下面

【重头戏】服务器配置

[scode type=“blue” size=“”]后端:什么?是狗都不用的宝塔面板?

前端:目前能用就行了,方便和简单才是前端写自定义接口项目的王道。[/scode]

一、买个服务器,不要主机

没错,推荐32核32G【滑稽】

二、安装一下环境

花了三天的工资,终于买回来了一台服务器,呜呜~

必装

Nginx(v1.2)、Pure-Ftpd(v1.0)、phpmyadmin(4.9)、mongodb(4.4)

Node.js版本管理器(v1.7 内置PM2管理器)

三、配置一下Node.js版本管理器

在【软件商店】打开【Node.js版本管理器】,选择【命令行版本】,一般选择官网上面显示的长期支持版

四、添加 node项目

首先,在【文件】的 wwwroot 文件夹里 新建一个文件夹,然后将 上面本地创建的api接口项目文件 放进去;

其次,在【网站】打开【Node项目】,点击【添加Node项目】,项目目录选择api接口项目所在的位置,设置 端口(没改过的话就是3000),其它的默认的就行,绑定域名可以先不选,好啦,点击 提交

好啦,现在你可以通过 ip:3000/路径 访问你写的api接口啦!**

不过,我想通过https协议访问咋办捏?毕竟,比如微信小程序就需要https的合法域名

点击添加好的项目的 设置,点击 【域名管理】,添加一个主域名或者泛域名(注意需要域名已经解析到该服务器ip),再点击【外网映射】打开映射,最后点击【SSL】,使用“Let’s Encrypt” 申请一个证书,并且开启“强制Https”,现在,你可以通过这个域名作为访问地址啦,而且不需要加端口!

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
下面是一个示例的代码,实现了用户注册、登录和其他接口的编写。 首先需要安装MongoDBNode.jsExpress框架,可以使用以下命令: ``` sudo apt install mongodb sudo apt install nodejs sudo apt install npm sudo npm install express ``` 接下来创建一个名为`server.js`的文件,这是我们的服务端代码。 ``` const express = require('express'); const bodyParser = require('body-parser'); const MongoClient = require('mongodb').MongoClient; const assert = require('assert'); // 连接MongoDB数据库 const url = 'mongodb://localhost:27017'; const dbName = 'mydatabase'; const client = new MongoClient(url, { useNewUrlParser: true }); client.connect(function(err) { assert.equal(null, err); console.log("Connected successfully to server"); }); const app = express(); const port = 3000; app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); // 用户注册接口 app.post('/register', function(req, res) { const db = client.db(dbName); const collection = db.collection('users'); const user = req.body; collection.insertOne(user, function(err, result) { if (err) { res.status(500).send('Error inserting user'); } else { res.status(200).send(result.ops[0]); } }); }); // 用户登录接口 app.post('/login', function(req, res) { const db = client.db(dbName); const collection = db.collection('users'); const user = req.body; collection.findOne({ email: user.email, password: user.password }, function(err, result) { if (err) { res.status(500).send('Error finding user'); } else if (result) { res.status(200).send(result); } else { res.status(401).send('Invalid email or password'); } }); }); // 其他接口 app.get('/api/data', function(req, res) { res.send('Data from server'); }); app.listen(port, function() { console.log('Server listening on port ' + port); }); ``` 上面的代码实现了以下功能: - 连接MongoDB数据库 - 解析请求体中的JSON数据 - 用户注册接口:将用户信息插入到MongoDB数据库中 - 用户登录接口:查找MongoDB数据库中是否存在用户名和密码匹配的记录 - 其他接口:返回简单的字符串数据 然后创建一个名为`index.html`的文件,这是我们的客户端代码。 ``` <!DOCTYPE html> <html> <head> <title>Example</title> </head> <body> <h1>Example</h1> <form id="register-form"> <label>Email:</label> <input type="email" name="email" required><br> <label>Password:</label> <input type="password" name="password" required><br> <button type="submit">Register</button> </form> <form id="login-form"> <label>Email:</label> <input type="email" name="email" required><br> <label>Password:</label> <input type="password" name="password" required><br> <button type="submit">Login</button> </form> <div id="data"></div> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <script> $(document).ready(function() { $('#register-form').submit(function(event) { event.preventDefault(); $.ajax({ url: '/register', method: 'POST', data: $(this).serialize(), success: function(data) { alert('User registered successfully'); }, error: function() { alert('Error registering user'); } }); }); $('#login-form').submit(function(event) { event.preventDefault(); $.ajax({ url: '/login', method: 'POST', data: $(this).serialize(), success: function(data) { alert('User logged in successfully'); }, error: function() { alert('Invalid email or password'); } }); }); $.ajax({ url: '/api/data', method: 'GET', success: function(data) { $('#data').text(data); } }); }); </script> </body> </html> ``` 上面的代码实现了以下功能: - 用户注册表单:向服务端发送POST请求来注册用户 - 用户登录表单:向服务端发送POST请求来登录用户 - 数据展示区域:向服务端发送GET请求来获取数据 最后在终端中运行服务端代码: ``` node server.js ``` 然后在浏览器中打开`index.html`文件,就可以进行用户注册、登录和其他接口的测试了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时光小灶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值