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(){
}
在这里插入代码片