当前位置: 首页 > news >正文

【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (三):Cors的设置及.env文件的设置

本项目旨在学习如何快速使用 nodejs 开发后端api,并为以后开展其他项目的开启提供简易的后端模版。(非后端工程师)
由于文档是代码写完之后,为了记录项目中需要注意的技术点,因此文档的叙述方式并非开发顺序(并非循序渐进的教学文档)。建议配合项目源码node-mongodb-template 。

【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (一):项目简介及安装依赖

【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (二):项目文件夹架构及路由的设置

【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (三):Cors的设置及.env文件的设置

【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (四):状态码的使用

【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (五):POST上传文件的设置

【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (六):token的设置

【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (七):MongoDB的设置

【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (八):API说明(暂时完结,后续考虑将在线版mongoDB变为本地版)

Cors的设置

跨域资源共享

app.js增加如下代码

//app.js
app.use((req,res,next)=>{res.header("Access-Control-Allow-Origin", "*");res.header("Access-Control-Allow-Headers","Origin,X-Requested-With,Content-Type,Accept,Authorization");if(req.method === "OPTIONS"){req.header("Access-Control-Allow-Methods", "PUT,POST,DELETE,PATCH,GET");return res.status(200).json();}next();
})

res.header("Access-Control-Allow-Origin", "*"); 标识允许那个域,*比较粗暴,表示全部都允许。

.env文件的设置

存储环境变量的文件,可以借助依赖dotenv文件夹。

  • 安装依赖

pnpm i --save dotenv

  • 引用依赖

注意:1、在app.jsserver.js文件中引用依赖;2、必须写在所有引用的最上方

//app.js
require("dotenv").config();
...
  • .env文件内容

MONGO_ATLAS_PW 指 在线mongoDB的连接密码

JWT_KEY JSON Web Token(JWT)密码管理key

MONGO_ATLAS_PW=***
JWT_KEY=***  
  • 变量使用

在线mongoDB的连接

mongoose.connect('mongodb+srv://db:'
+process.env.MONGO_ATLAS_PW
+'@test.gx6wc.mongodb.net/?retryWrites=true&w=majority&appName=test');mongoose.Promise = global.Promise;

密码加密与校验

const token = jwt.sign({email:user[0].email,userId:user[0]._id
},process.env.JWT_KEY,{expiresIn:"1h",
});
const decoded = jwt.verify(token,process.env.JWT_KEY);

相关文章:

【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (三):Cors的设置及.env文件的设置

本项目旨在学习如何快速使用 nodejs 开发后端api,并为以后开展其他项目的开启提供简易的后端模版。(非后端工程师) 由于文档是代码写完之后,为了记录项目中需要注意的技术点,因此文档的叙述方式并非开发顺序&#xff0…...

[python flask 数据库ORM操作]

一、链接数据库 我们选择的框架是flask-sqlAlchemy 这个框架是对pymysql的封装。 连接数据库 #导入包 from flask_sqlalchemy import SQLAlchemy #创建flask app对象 app Flask(__name__) #设置配置信息 HOSTNAME "localhost" PORT 3306; USERNAME "root&…...

【JavaScript】如何优雅的编码if判断中的一个变量多个或条件

前言 你是否写过这样代码: ...if (status 1 || status 4 || status 6)...代码场景是这样的,记录有多个状态,当状态等于1,4,6时要做相同的逻辑。今天我们就分享一下如何简化写法,让代码更好看,更优雅。 使用 switch 语句 ...…...

SaaS云诊所系统源码,基于云计算技术的SAAS模式诊所管理系统,适用于诊所、门诊、卫生服务站、卫生站

SaaS云诊所管理系统源码,门诊管理系统源码,诊所药店云平台源码 云诊所管理系统是基于云计算的SAAS模式诊所管理系统,全面适用于诊所、门诊、卫生服务站、卫生站、卫生所、中医馆、药店、私人个体诊所、中小型门诊、乡村卫生室、医务室以及社…...

字节,AI产品经理面试,拿下offer!

如果大家最近打算找ai产品经理这方面的工作,可以对照着脑图准备起来啦。 这篇文章给大家讲解两道高频问题: 1)AI产品经理和传统产品经理有什么区别 2)AI 产品经理的工作职责和能力要求是什么? 这两个问题看似简单&a…...

Postgresql pgsql 插件之postgis 安装配置

相关链接: pgsql编译安装 一、说明 postgis是pgsql最强大的几个插件之一,可以用于地理信息系统(gis)的搭建 二、插件安装启动 由于我的pgsql是编译安装的,所以插件也是编译安装,更加灵活。 1.进入到源…...

单片机STC8H8K64U开发板_RA6809开发板 驱动彩屏显示

单片机STC8H8K64U开发板,型号RT8H8K001 预留Type C接口,可供电SWD下载: RA6809开发板,型号RT6809CNN01 预留Type C接口供电,预留MCU接口、电容触摸屏接口、液晶屏接口: 双臂合一,驱动和控…...

Redis底层和缓存雪崩,击穿,穿透

一、Redis的数据结构 1.动态字符串 我们知道Redis中保存的Key是字符串,value往往hi字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。不过,Redis 没有直接使用c语言的字符串,因为c语言字符串存在许多问题: …...

[Java基础] 集合框架

往期回顾 [Java基础] 基本数据类型 [Java基础] 运算符 [Java基础] 流程控制 [Java基础] 面向对象编程 [Java基础] 集合框架 [Java基础] 输入输出流 [Java基础] 异常处理机制 [Java基础] Lambda 表达式 目录 List 接口 数据结构 最佳实践 实战代码 Set 接口 数据…...

机器学习基础:算法如何让 AI 自我学习

大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 AI工具集1:大厂AI工具【共23款…...

25届字节跳动 抖音NLP算法工程师 面经

目录 一面/技术面 2024/08/30二面/技术面 2024/09/13 一面/技术面 2024/08/30 深挖实习(最近的一段实习)深挖论文(让我共享屏幕,然后对着自己的论文讲)论文做了多久完成的?主要都做了哪些工作?…...

转行网络工程师以后的就业前景如何?

就业前景如何本质上取决于你在这行业的发展状况,而发展状况又主要由你的技术水平和与人交流的能力所决定。 如果你的技术能力仅限于"安服仔"、"脚本小子"等入门级水平,那你的职业发展可能会像浮萍一样漂泊不定。但如果你能轻松编写…...

docker 和 containerd 关系

containerd 是一个开源的容器运行时,它是用来管理容器生命周期的守护进程。containerd 支持 Docker 和其他容器格式,并且是许多现代容器编排系统(如 Kubernetes)的基础组件之一。 containerd 提供了一个命令行工具 ctr&#xff0…...

算法-二叉树的最大路径和

为了找到二叉树的最大路径和,我们需要考虑所有可能的路径,包括不经过根节点的路径,所以其实如果你从整体上来一条路径一条路径的遍历,太复杂,我们可以换个思路,从每个节点出发,就把那个节点当成…...

解决url含%导致404错误

String imageUrl;// 使用WebClient下载图片WebClient webClient WebClientUtil.getWebClient();Mono<ByteArrayOutputStream> byteArrayOutputStreamMono webClient.get().uri(imageUrl).retrieve().bodyToFlux(DataBuffer.class) // 获取图片内容的DataBuffer流.reduc…...

[Linux Codec驱动]音频路由概念

1. 音频路由的基本概念 源&#xff08;Source&#xff09;&#xff1a;音频信号的发出方&#xff0c;通常是一个音频输入设备&#xff0c;如麦克风、音频播放设备等。接收端&#xff08;Sink&#xff09;&#xff1a;音频信号的接收方&#xff0c;通常是音频输出设备&#xff…...

母线槽温度监测的哪个部位?安科瑞母线槽测温解决方案-安科瑞黄安南

安科瑞生产厂家&#xff1a;黄安南 壹捌柒/陆壹伍/零陆贰叁柒 母线槽简单来说充当着电缆的角色只不过它是大电流的输送设备&#xff0c;一般是铜排或者绿排做导体&#xff0c;用非烯性绝缘材料做支撑&#xff0c;搭配金属外壳。相对于电缆来说母线槽的载流能力强、电能损耗低、…...

《深度学习》—— 模型的部署

文章目录 一、部署方式二、部署步骤三、注意事项 深度学习中模型的部署是将训练好的模型应用到实际场景中的过程&#xff0c;以下是对深度学习模型部署的详细解析&#xff1a; 一、部署方式 嵌入式设备部署&#xff1a;将深度学习模型部署到嵌入式设备中&#xff0c;如智能手机…...

多IP访问浏览器

添加多个ip地址 nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.61.100/24 ipv4.addresses 192.168.61.200/24 ipv4.addresses 192.168.61.128 ipv4.gateway 192.168.61.2 ipv4.dns 114.114.114.114...

1024程序员节福利放送 | AI 照片修复魔法,一键重拾旧时记忆

程序员充电礼包 今天是 1024 程序员节&#xff0c;小贝特意为大家准备了重磅福利&#xff01;新用户使用邀请码「1024」注册 http://OpenBayes.com&#xff0c;即可获得 20 小时单卡 A6000 的免费使用时长&#xff0c;价值 80 元&#xff0c;资源 1 个月有效。仅限今日&#xf…...

技术深度解析:ER-Save-Editor如何实现跨平台艾尔登法环存档编辑

技术深度解析&#xff1a;ER-Save-Editor如何实现跨平台艾尔登法环存档编辑 【免费下载链接】ER-Save-Editor Elden Ring Save Editor. Compatible with PC and Playstation saves. 项目地址: https://gitcode.com/GitHub_Trending/er/ER-Save-Editor 艾尔登法环存档编辑…...

如何快速优化AMD系统:5个实用技巧让Ryzen性能更稳定

如何快速优化AMD系统&#xff1a;5个实用技巧让Ryzen性能更稳定 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitc…...

TLB缓存原理与内存地址转换优化

深入理解TLB缓存原理与实现1. 内存管理单元与地址转换基础1.1 MMU工作原理现代计算机系统中&#xff0c;内存管理单元(MMU)负责将虚拟地址转换为物理地址。这一转换过程依赖于页表结构&#xff0c;在64位系统中通常采用4级页表架构&#xff1a;PGD (Page Global Directory)PUD …...

嵌入式系统错误处理机制与实现

嵌入式系统中的错误处理机制深度解析1. 错误概念与分类1.1 错误分类体系在嵌入式系统开发中&#xff0c;错误处理是确保系统可靠性的关键环节。从严重性维度分析&#xff0c;程序错误可分为两类&#xff1a;致命性错误&#xff1a;系统无法执行恢复操作&#xff0c;典型处理方式…...

**发散创新:用Rust构建Web3.0去中心化身份(DID)验证服务**在Web3.0时代,用户不再依赖中心化的身份提供商(

发散创新&#xff1a;用Rust构建Web3.0去中心化身份&#xff08;DID&#xff09;验证服务 在Web3.0时代&#xff0c;用户不再依赖中心化的身份提供商&#xff08;如Google、微信登录&#xff09;&#xff0c;而是通过去中心化身份&#xff08;Decentralized Identity, DID&…...

DataWorks与PyODPS实战:MaxCompute数据处理高效技巧

1. 初识DataWorks与PyODPS&#xff1a;大数据处理的黄金搭档 第一次接触DataWorks和PyODPS时&#xff0c;我就像发现了一个新大陆。DataWorks作为阿里云的一站式大数据开发平台&#xff0c;而PyODPS则是连接Python和MaxCompute的桥梁&#xff0c;这个组合让大数据处理变得前所…...

Bili2Text:B站视频转文字的智能革命

Bili2Text&#xff1a;B站视频转文字的智能革命 【免费下载链接】bili2text Bilibili视频转文字&#xff0c;一步到位&#xff0c;输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 副标题&#xff1a;还在为视频笔记熬夜&#xff1f;这款工具让…...

告别无效Agent工程!掌握这3大核心,让你的AI助手效率飙升10倍!

最近 X 上有篇文章很火&#xff0c;叫《How To Be A World-Class Agentic Engineer》&#xff0c;作者是个深度的 Agent 工程实践者。 文章开头是这样描述的&#xff1a;你用着 Claude Code&#xff0c;每天琢磨自己是不是把它的能力榨干了。偶尔看到它干出极其弱智的事情&…...

【限时解密】某汽车Tier1工厂拒绝公开的Python网关冗余切换配置——双网口+心跳检测+自动故障转移(含Wireshark抓包验证截图)

第一章&#xff1a;工业Python网关冗余架构设计背景与合规边界在现代工业自动化系统中&#xff0c;Python因其丰富的生态、快速迭代能力及对OPC UA、Modbus、MQTT等协议的成熟支持&#xff0c;正被广泛用于边缘网关开发。然而&#xff0c;将通用编程语言应用于高可用性&#xf…...

GitLab vs Gitea 深度解析:如何选择适合你的代码托管方案?

1. 核心定位与适用场景对比 第一次接触代码托管平台时&#xff0c;我和很多开发者一样在GitLab和Gitea之间纠结。经过三年在不同规模团队的实际使用&#xff0c;我发现这两个工具就像瑞士军刀和美工刀的关系——没有绝对的好坏&#xff0c;关键看你要切什么。 GitLab更像是个&q…...