Node.js封装异步API

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(){
}
在这里插入代码片
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值