Express框架与Mongodb的结合使用

news/2025/1/15 21:49:22/

前言

如果你打开这篇文章,说明已经开始有做项目的打算了。

这里有express和mongodb的相关参考教程,遇到问题可以在里面找到答案:
Express框架从入门到如土
一文入门Mongodb
这里说下为什么要express框架和mongodb结合。express框架不是指单纯的引入express,而是结合express-generator工具来创建express框架。在前后端未分离的时候,我们还可以使用一些轻量级的数据库如lowdb,但是目前的开发大部分都是前后端分离,用js写后端,用的多的且规范的就是express+mongodb这一套技术栈。所以本文针对这套技术栈进行讲解。

最后就是,本文并不是手把手讲解,只是记录关键步骤。如果有问题可以在上面两篇文章中找答案。

连接数据库

首先导入连接数据库文件:

module.exports = function (success, error) {// 导入const mongoose = require('mongoose');// 连接服务mongoose.connect('mongodb://127.0.0.1:27017/test');//设置回调mongoose.connection.once('open', () => {success()});//设置连接错误的回调mongoose.connection.on('error', () => {error()})// 设置连接关闭的回调mongoose.connection.on('close', () => {console.log('连接关闭')})
}

接着在入口文件www中引入

#!/usr/bin/env node/*** Module dependencies.*/
const db = require('../db/db')
db(() => {var app = require('../app');var debug = require('debug')('serve:server');var http = require('http');/*** Get port from environment and store in Express.*/var port = normalizePort(process.env.PORT || '3000');app.set('port', port);/*** Create HTTP server.*/var server = http.createServer(app);/*** Listen on provided port, on all network interfaces.*/server.listen(port);server.on('error', onError);server.on('listening', onListening);/*** Normalize a port into a number, string, or false.*/function normalizePort(val) {var port = parseInt(val, 10);if (isNaN(port)) {// named pipereturn val;}if (port >= 0) {// port numberreturn port;}return false;}/*** Event listener for HTTP server "error" event.*/function onError(error) {if (error.syscall !== 'listen') {throw error;}var bind = typeof port === 'string'? 'Pipe ' + port: 'Port ' + port;// handle specific listen errors with friendly messagesswitch (error.code) {case 'EACCES':console.error(bind + ' requires elevated privileges');process.exit(1);break;case 'EADDRINUSE':console.error(bind + ' is already in use');process.exit(1);break;default:throw error;}}/*** Event listener for HTTP server "listening" event.*/function onListening() {var addr = server.address();var bind = typeof addr === 'string'? 'pipe ' + addr: 'port ' + addr.port;debug('Listening on ' + bind);}})

解释一下,传进去的是一个success函数。

到这一步,数据库已经成功连接。

准备模型文件

//导入mongoose
const mongoose = require('mongoose')let FoodSchema = new mongoose.Schema({food: String,hot: Number
})//创建模型对象
let FoodModel = mongoose.model('food', FoodSchema);module.exports = FoodModel

操作数据库

以读取文档为例操作数据库:

我提前写好了一部分的数据,如下表格:
在这里插入图片描述
接着我在接口中读取数据:

//数据库读取数据库
router.get('/foods', (req, res) => {FoodModel.find().then(data => {//设置请求头防止跨域res.setHeader("Access-Control-Allow-Origin", '*')res.send(data)}, err => {console.log(err)})
})

现在我用postman来测试接口已经能够成功获取到了:
在这里插入图片描述
当然也可使用axios来测试:(如果不成功要注意端口号)

    <button class="btn">获取数据</button><script>var btn = document.querySelector('.btn');btn.addEventListener('click', () => {axios({methods: "GET",url: 'http://127.0.0.1:3000/foods',}).then(res => {console.log(res)}, err => {console.log(err)})})

在这里插入图片描述
其余对数据库的操作可以根据需求,应用该文章中的方法:
一文入门Mongodb

后记

以上就是Express框架与Mongodb的结合使用方法,后续与这方面相关的文章还会继续更新,欢迎关注!


http://www.ppmy.cn/news/486218.html

相关文章

wsl中docker自启动

前言 wsl -l -v # 查看 wsl 的状态 wsl -t Ubuntu # 关闭指定版本 wsl -d Ubuntu # 启动指定版本 启动 docker 通过命令 ps -p 1 -o comm 我们知道我们用的是 init&#xff0c;故我们将 systemd 命令修改为 SysV init命令。 ps -p 1 -o comm 更换命令&#xff0c;用SysV in…

单片机入门所需的基础数电和模电知识

要学习单片机并入门相关领域&#xff0c;推荐掌握以下数电和模电的基础知识&#xff1a; 数电知识&#xff1a; 布尔代数和逻辑门&#xff1a;了解布尔代数的基本概念和逻辑门的工作原理&#xff0c;包括与门、或门、非门、与非门、或非门、异或门等。 时序逻辑和时钟信号&a…

张驰咨询:某包装印刷集团第五期六西格玛项目通过专家评审

近日&#xff0c;某包装印刷集团首期六西格玛项目通过专家评审&#xff0c;张驰咨询首席顾问张驰、资深顾问朱老师出席评审大会。该公司领导和各项目组成员出席项目关闭仪式。本期项目为该企业培养数十位六西格玛绿带&#xff0c;项目范围覆盖材料成本降低、制造成本降低、关键…

AI一分钟 | “芯片门”影响仍在,英伟达旗下多款芯片也遭遇“幽灵”漏洞影响;贾跃亭邀媒体试乘法乐第FF91,你怎么看?

一分钟AI “芯片门”影响仍在&#xff0c;英伟达称旗下部分芯片也遭遇“幽灵”漏洞影响&#xff0c;包括GeForce、Tesla、Grid、NVS以及Quadro等。科大讯飞首次亮相CES 展示多项人工智能产品&#xff1a;讯飞听见、讯飞晓译翻译机、人工智能机顶盒、MORFEI智能麦克风、叮咚二代…

AI耳机要想“复制”智能音箱的爆红,还要迈过哪些坎?

如果说智能音箱的爆红&#xff0c;是在情理之中&#xff0c;那最近大伙儿扎堆AI耳机是不是在意料之外呢&#xff1f; 先说海外的&#xff0c;2017年10月谷歌公布Pixel Buds耳机&#xff0c;被认为是业内首个真正意义上的“智能耳机”。其最大亮点是整合了谷歌语音助理&#xff…

2018 AI 产品趋势(上):智能音箱的下半场,出路在何方

来源&#xff1a;36氪 概要&#xff1a;AI时代&#xff0c;想必会也诞生新的巨头&#xff0c;接替前人站在浪潮之巅。但问题是&#xff0c;趋势前面&#xff0c;AI带来的机遇究竟在哪&#xff1f; 科技真是迷人&#xff0c;他会眷顾每一代的年轻人。从沸腾的互联网时代&#xf…

陷入尴尬境地的智能耳机,如何才能“逆风翻盘”?

文 | 颜璇 来源 | 智能相对论&#xff08;ID&#xff1a;aixdlun&#xff09; 近几年&#xff0c;智能硬件受到了诸多资本的青睐&#xff0c;智能音箱、智能手表等产品层出不穷。耳机作为当前使用量最大且使用时间最长的外设硬件之一&#xff0c;也受到了许多厂商的关注。 随着…

使用V-Ray为Grasshopper渲染参数化设计

使用V-Ray for Grasshopper&#xff0c;包含在最新版本的V-Ray for Rhino中&#xff0c;用户可以在Grasshopper中创建逼真的图像。我们让Imago Design的创始人Jan Kokol解释了什么是新的&#xff0c;以及它将如何改变他的工作流程。 适用于Rhino的V-Ray 3.6在功能&#xff0c;易…