Javascript 使用express js和vuejs提供不同的本地json数据
我对NodeJS和Expressjs非常陌生。我在一个名为json data的文件夹中有三个json文件,我想设置一个简单的nodejs应用程序,它是serve data,我可以在vuejs前端使用它。但我不知道如何创建一个简单的nodeJS应用程序来提供数据 这是我正在努力完成的任务。 呼叫中心每天都会通过呼叫中心代理打大量的电话,这些电话会转储到JSON文件中。我们需要您处理大量数据,并以良好的方式将其呈现给主管 数据的问题在于结构,它分布在多个文件中。我需要解决这个问题,并以一种有用的方式呈现数据 1.第一部分: 创建一个简单的nodeJS应用程序来提供数据。您可以使用任何nodeJS框架来实现这一点。不应更改Javascript 使用express js和vuejs提供不同的本地json数据,javascript,node.js,json,express,vue.js,Javascript,Node.js,Json,Express,Vue.js,我对NodeJS和Expressjs非常陌生。我在一个名为json data的文件夹中有三个json文件,我想设置一个简单的nodejs应用程序,它是serve data,我可以在vuejs前端使用它。但我不知道如何创建一个简单的nodeJS应用程序来提供数据 这是我正在努力完成的任务。 呼叫中心每天都会通过呼叫中心代理打大量的电话,这些电话会转储到JSON文件中。我们需要您处理大量数据,并以良好的方式将其呈现给主管 数据的问题在于结构,它分布在多个文件中。我需要解决这个问题,并以一种有用的方式
json data
文件夹中的数据
2.第二部分:
创建一个使用现代JS前端框架的应用程序Vue。前端应用程序应具有以下路径:
显示呼叫聚合表的主页,例如: 电话号码 通话次数 上次通话详情 +49151484522 3个电话 代理名称/11:46 +49158544147 1个电话 代理人姓名/14:46 +49151783331 2个电话 代理名称/16:46/
从技术上讲,您可以在express服务器上加载内存中的所有JSON,并在每个请求中搜索要查找的数据 事实上,如果你有更大的文件,这将是非常低效的。这意味着每个请求都会将JSON加载到内存中。此外,搜索大型对象的成本也很高 理想情况下,您应该将条目存储在数据库中。如果您不能或不需要使用数据库来存储这些数据,您可以使用某种搜索引擎对其进行索引。您可以在服务器上使用一些轻量级搜索引擎。
一个快速的谷歌搜索带来了这个:
虽然我个人没有使用过它。除了文件系统之外,使用数据库也不错 这里有一个样品溶液- 将
文件夹添加到此项目的根目录json data
- 在该项目的根目录中添加
文件key.js
module.exports={
路径:“json数据”,
资源:“resourcation.json”,
代理:“AGENTS.json”,
日志:“LOGS.json”,
}
const express=require(“express”);
const router=express.router();
const CommonController=require(“../controllers/common”);
router.get(“/”,CommonController.home);
get(“/agent/:id/”,CommonController.agent);
router.get(“/call/:number/”,CommonController.call);
module.exports=路由器;
const fs=require('fs');
常量路径=要求(“路径”);
常量键=需要(“../KEYS”);
函数get_logs(){
让文件名=path.join(u dirname,`../${KEYS.path}`,KEYS.LOGS)
让rawdata=fs.readFileSync(文件名);
让logs=JSON.parse(rawdata);
返回日志;
}
函数get_agents(){
让file_name=path.join(u dirname,`../${KEYS.path}`,KEYS.AGENTS)
让rawdata=fs.readFileSync(文件名);
让agents=JSON.parse(rawdata);
让数据={}
agents.forEach(元素=>{
数据[element.identifier]=元素
});
返回数据;
}
函数get_regoulation(){
让文件名=path.join(u dirname,`../${KEYS.path}`,KEYS.resourcation)
让rawdata=fs.readFileSync(文件名);
让agents=JSON.parse(rawdata);
让数据={}
agents.forEach(元素=>{
数据[element.identifier]=element.resolution
});
返回数据;
}
exports.home=异步(请求、恢复、下一步)=>{
试一试{
let logs=get_logs();
让customData={}
logs.forEach(元素=>{
如果(!customData[元素编号]){
customData[元素.编号]=[元素]
}否则{
customData[element.number].push(元素)
}
});
}
捕捉(错误){
console.log(错误)
返回res.status(500).json({message:“文件问题”});
}
let agent=get_agent();
让结果=[];
试一试{
for(customData中的常量编号){
const object=customData[number];
const last=object[object.length-1];
const_agent=agent[last.agentIdentifier];
console.log(_agent,last.agentIdentifier)
常数数据={
数字,
numberOfCall:object.length,
名称:_agent.firstName++_agent.lastName,
持续时间:last.duration
};
结果:推送(数据);
}
}
捕捉(错误){
返回res.status(500).json({message:“数据操作问题”});
}
res.status(200).json(结果);
};
exports.agent=async(请求、恢复、下一步)=>{
const ID=req.params.ID;
常量结果=[]
试一试{
const regoulation=get_regoulation();
const logs=get_logs();
logs.forEach(元素=>{
if(element.agentIdentifier==ID){
结果:推({
编号:element.number,
dateTime:element.dateTime,
分辨率:regoulation[元素标识符]
})
}
});
}
捕捉(错误){
console.log(错误)
返回res.status(500).json({message:“数据提取问题”});
}
res.status(200).json(结果);
};
exports.call=async(请求、恢复、下一步)=>{
常量编号=请求参数编号;
常量结果=[]
试一试{
const logs=get_logs();
const agents=get_agents();
const regoulation=get_regoulation();
logs.forEach(元素=>{
if(element.number==number){
常量代理=代理[element.agentIdentifier]
结果:推({
姓名:agent.firstName+