Nodejs基础搭建讲解及后端与数据库操作

一、前言知识:什么是nodejs

注意事项:以下本片段来自nodejs官网所截取有需要查看详情请前往https://nodejs.org/en/官网。

在这里插入图片描述

翻译:Node.js®是一个免费、开源、跨平台的JavaScript运行时环境,允许开发人员创建服务器、web应用程序、命令行工具和脚本。
通俗来讲:Node.js就是一款应用程序,是一款软件,它可以运行JavaScript

二、Node.js中所使用的JavaScript与浏览器中的JavaScript之间的区别

1. 浏览器中的JavaScript可使用的语法

在这里插入图片描述

2. Node.js中可使用的JavaScript语法

在这里插入图片描述

总结:
1、Node.js 中不能使用 BOMDOM 的 API,可以使用 console 和定时器的 API。
2、Node.js 中的顶级对象为 global,也可以用 globalThis 访问顶级对象。

三、什么是Buffer它在Node.js起到什么作用及使用方法

1. 什么是Buffer它在Node.js起到什么作用

在 Node.js 里Buffer是一个全局对象,用于处理二进制数据。在 JavaScript 原生环境中并没有直接处理二进制数据的机制,而 Buffer 就填补了这个空白。它本质上是在内存中开辟的一段区域,类似于整数数组,但能直接与内存中的二进制数据进行交互Buffer 对象的每个元素代表一个字节,其取值范围是 0 到 255
在这里插入图片描述

四、Node.js操作数据库语法示例

技术概要:以下将介绍nodejs中如何操作数据库增删改查使用方法。

1. 使用insertOne函数向数据库中添加一条数据

 db.collection('user').insertOne({
 	name: 'John Doe',
 	age: 30
 });

2. 使用deleteOne函数向数据库中John Doe此数据

 db.collection('user').deleteOne({name: 'John Doe' });

3. 使用updateOne函数修改数据库中John Doe的年龄

 db.collection('user').insertOne(
 	{name: 'John Doe'}//原数据键名age: 值为30
 	{$set: {age: 40}}
 );

4. 使用find函数查询数据库中user表中的全部数据

 db.collection('user').find();

五、Node.js对数据库增删改查详细代码讲解

注意:这里的讲解以Vue框架作为示例,如有需要React或Angelar框架的小伙伴敬请关注更新

1. 前端向后端添加数据,后端代码实现数据存储

(1)前端携带参数向后端发起请求

async function add() {
	await axios({
		url: 'https://q6zv39.laf.run/add-todo',
		method: 'POST',
		data: {
			value: value.value,
			isCompleted: false
		}
	})
}

(2)后端node实现数据存储

import cloud from '@lafjs/cloud'

export default async function (ctx: FunctionContext) {
	const body = ctx.body;
	const db = cloud.mongo.db;
	//验证数据结构是否合法
	if(typeof body !== 'object' || body === null) {
		return {
			success: false,
			message: "Invalid data format: body should be an object."
		}
	}
	if(typeof body.value !== 'string' || body === null) {
		return {
			success: false,
			message: "Invalid data format: 'value' should be an string."
		}
	}
	if(typeof body.isCompleted !== 'boolean') {
		return {
			success: false,
			message: "Invalid data format: 'isCompleted' should be an boolean."
		}
	}
	//连接到list集合
	const collection = db.collection('list');
	//查询集合中的所有文档
	const result = await collection.insertOne(body);
	//返回插入操作的结果
	return {
		success: true,
		insertedId: result
	};
}

2. 前端向后端请求删除数据,后端代码实现数据删除

(1)前端通过id向后端发起请求

async function del(id) {
	await axios({
		url: 'https://q6zv39.laf.run/del_todo',
		method: 'POST',
		data: {
			id: id
		}
	})
}

(2)后端通过前端传递的参数id匹配数据库并删除此数据

import cloud from '@lafjs/cloud'
import { ObjectId } from 'mongodb'; //引入 ObjectId 以正确处理数据库 ID

export default async function (ctx: FunctionContext) {
	const db = cloud.mongo.db;
	const id = ctx.body.id;
	if(!id) {
		return {
			success: false,
			message: "Invalid request: 'id' is required."
		}
	}
	//获取 list 集合
	const collection = db.collection('list');
	//删除对应 ID 的文档
	const deleteResult = await collection.deleteOne({_id: new ObjectId(id)});
	if(deleteResult.deletedCount === 1) {
		return {
			success: true,
			message: "Document deleted successfully."
		}
	} else {
		return {
			success: false,
			message: "Document not found or already deleted."
		}
	}
}

3. 前端向后端请求修改数据,后端代码实现数据修改保存

(1)前端通过id指向需要修改的数据对象向后端发起请求

async function update(id) {
	await axios({
		url: 'https://q6zv39.laf.run/update_todo',
		method: 'POST',
		data: {
			id
		}
	})
}

(2)后端通过前端传递的参数id匹配数据库并修改此数据

import cloud from '@lafjs/cloud'
import { ObjectId } from 'mongodb'; //引入 ObjectId 以处理 MongoDB 的 ID 数据类型
export default async function (ctx: FunctionContext) {
	const db = cloud.mongo.db;
	const id = ctx.body.id;
	if(!id) {
		return {
			success: false,
			message: "Invalid request: 'id' is required."
		}
	}
	//连接到 list 集合
	const collection = db.collection('list');
	//根据 ID 查找对应的文档
	const document = await collection.findOne({_id: new ObjectId(id)});
	if(!document) {
		return {
			success: false,
			message: "Document not found."
		}
	}
	//更新 isCompleted 字段为相反的值
	const updatedResult = await collection.updateOne(
		{_id: new ObjectId(id)},
		{$set: {isCompleted: !document.isCompleted}}
	);
	if(updatedResult.modifiedCount === 1) {
		return {
			success: true,
			message: "Document updated successfully."
		}
	} else {
		return {
			success: false,
			message: "Failed to update document."
		}
	}
}

4. 前端向后端请求查询数据,后端代码实现数据查询

(1)前端向后端发起数据查询请求

async function getList() {
	const res = await axios({
		url: 'https://q6zv39.laf.run/get_list',
		method: 'GET',
	})
}

(2)后端查询数据库中全部数据并返回所有的查询结果

import cloud from '@lafjs/cloud'

export default async function (ctx: FunctionContext) {
	const db = cloud.mongo.db;
	//连接到list集合
	const collection = db.collection('list');
	//查询集合中的所有文档
	const data = await collection.find({}).toArray();
	//返回查询到的数据
	return {
		success: true,
		list: data
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值