Node.js封装异步API

本文介绍Node.js中用于数据操作的模块设计,包括学生信息的增删改查API封装,利用fs模块读写JSON文件,以及使用回调函数处理异步操作结果。深入探讨了如何在路由文件中调用这些API。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Node.js中需要一个数据操作文件模块
这个模块不关心业务,只处理数据
比如students.js文件,封装students增删改查的API
这是Node.js的精华所在

如果需要获取一个函数中异步操作的结果,那么只能通过callback回调函数来调用

function fn(callback){
	setTimeout(function(){
		var data='hello'
		callback(data)
		},1000)
		}

这里的callback就是

     fn(function(data){
        	console.log(data)
        	})

封装之后,只需要在路由文件中直接调取就行

/*
callback中的参数
第一个参数是err
成功是null
错误是错误对象
第二个参数是结果
成功是 数组
错误是 undefined
return []
*/

var fs=rquire('fs')
var dbPath='./db.json'

//获取所有学生列表

exports.find=function(callback){
	fs.readFile(dbPath,'utf8',function(err,data){
		if(err){
			return callback(err)
				}
			callback(null,JSON.parse(data).students)
			})
			}

//添加保存学生

exports.save=function(students,callback){
	fs.readFile(dbPath,'utf8',func(err,data){
		if(err){
			return callback(err)
			}
			var students=JSON.parse(data).students

			//处理ID唯一的,不重复的
			students.id=students[students.length-1].id+1
			
			students.push(student)

			//把对象数据转化为字符串
			var fileDate=JSON.stringify({
			students:students
			})

			//把字符串保存到文件中
			fs.writeFile(dbPath,fileData,function(err){
				if(err){
					return callback(err)
					}
					callback(null)
					})
				})
			}

exports.updataByID=function(student ,callback){
	fs.readFile(dbPath,'utf8',function(err,data){
		if(err){
			return callback(err)
			}
			var students=JSON.parse(data).students
			
			//需要修改谁,就把谁找出来
			//es6中的数组方法:find()函数用来查找目标元素,找到就返回该元素,找不到返回undefined。
			**//当某个遍历项符合item.id===students.id条件的时候,find会终止遍历,同时返回遍历项,也即item**
			var stu=students.find(function(item){
				return item.id===students.id
				})
			for(var key in student){
			stu[key]=student[key]
			}
			//把对象数据转换为字符串
			var fileData=JSON.stringify({
				students:students})
			
			//把字符串保存到文件中
			fs.writeFile(dbPath,fileData,function(err){		
				if(err){
					return callback(err)
					}
					callback(null)
					})
	})
}
updateById({
	id:1,
	name:'哈哈哈',
	age:15
	},func(err){
	}})

exports.delete=function(){
}
在这里插入代码片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值