node里根据传过来的一串数字,循环读取JSON文件,拼接读取结果,并返回值
// 获取购物车列表
app.get('/getshopcarlist/', function (req, res) {
//这里传过来一串 ,分隔的数字 穿过来的值为类似 23,27,98 数字用,隔开
var id = req.query.ID
var idlist = id.split(",")
var pagePersonmessage = []
function getFileBylist(path) {
return new Promise(function (resolve, reject) {//这里用的Promise构造函数,创造一个异步实例
fs.readFile(path, function (err, data) {
if (err) {
return reject(err) //错误结果
} else {
console.log(path + "----path") //判断是否路径传入正确
var person = data.toString();
person = JSON.parse(person);
var pagePerson = person.message[0] //取值
// console.log(pagePersonmessage)
resolve(pagePerson) //返回每个读取的文件
}
})
})
}
// 由于readFile是异步操作,我使用了async
var readlist = async function () {
var arr = [];
for (let i in idlist) { //循环每个地址,使用let变量 不过由于使用了async,这里let和var无区别
var path = "./shopcarlist/shopcarlist" + idlist[i] + ".json" //拼接
arr = await getFileBylist(path) //这里的await就是会执行到这里会等待执行完毕再进行下面的代码
pagePersonmessage = pagePersonmessage.concat(arr) //拼接为一个数组
}
// console.log(pagePersonmessage)
res.header("Access-Control-Allow-Origin", "*"); //这里是跨域头部代码
res.header("Access-Control-Allow-Headers", "X-Requested-With,Origin,Content-Type,Accept");
res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
// console.log(pagePersonmessage);
var pagePersonList = { "status": 0, "message": pagePersonmessage } //拼接,发送
res.send(pagePersonList);
res.end();
}
readlist()
});
app.listen(3000, function () { //监听3000端口
console.log("Server running at 3000 port");
});