javascript - 在快速响应中获取空数组

标签 javascript node.js express

我正在研究一个示例,我试图从这个快速示例中获取单个员工实例,但是当我输入 localhost:3000/1 时,我得到一个空数组。有谁知道我在这里做错了什么?

'use strict';

const express = require('express');
const app = express();

var employees = [
	{
   "EmployeeID" :1 ,
   "EmployeeName" : "RNA Team",
   "Salary" : "200000",
   "Address" : "Bangalore"
   },
   {
   "EmployeeID" :2 ,
   "EmployeeName" : "Mahesh Samabesh",
   "Salary" : "100000",
   "Address" : "Hydrabad"
   },
   {
   "EmployeeID" :3 ,
   "EmployeeName" : "Rui Figo",
   "Salary" : "50000",
   "Address" : "Dallas"
   },
   {
   "EmployeeID" :4 ,
   "EmployeeName" : "Indradev Jana",
   "Salary" : "456789",
   "Address" : "Los Angles"
   },
   {
   "EmployeeID" :5 ,
   "EmployeeName" : "Suresh Shailesh",
   "Salary" : "1234567",
   "Address" : "Patna"
  }
];

//Get the employees records

app.get('/', function(req, res){
	res.send(employees);
});

//run the server
var server = app.listen(3000, function(){
	var host = server.address().address;
	var port  = server.address().port;

	console.log('Server started and listening at:> http://%s:%s', host, port);
});

//Get single employee record
app.get('/:EmployeeID', function(req, res){
	var employeeID = req.params.EmployeeID;

	//Get Employee Records whose EmployeeID = get the EmployeeID at runtime
	var filteredEmployee = [];

	for(var i=0; i < employees.length; i++){
		if(employees[i].EmployeeID == employeeID){
			filteredEmployee.push(employees[i]);
		}
	} //end Loop
	employees = filteredEmployee;
	console.log(filteredEmployee);
	res.send(employees);
});

最佳答案

您确实不应该在查询操作中改变数据。你可以这样做:

app.get('/:EmployeeID', (req, res) => {
  const employeeID = req.params.EmployeeID;
  // filter the employees without mutating the array, and get the first result
  const [employee] = employees.filter(e => e.EmployeeID === employeeID)
  // if there was a result, send it, otherwise send an error
  res.json(employee ? employee : { error: `Employee with id ${employeeID} not found` })
});

关于javascript - 在快速响应中获取空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42330984/

相关文章:

javascript - 如何将参数传递给类扩展组件

javascript - 无法在 Samsung Galaxy Tab 2 7.0 的默认浏览器上通过 youtube API 播放 youtube 视频

javascript - Firebase Cloud Functions https.onCall 已完成,状态代码为 : 204

node.js - 当node-amqp出现问题时,为什么会出现 "close"事件?

javascript - 调用原始函数而不是 stub

javascript - Webdriver.io pageObject 模式 - 通过传递参数定义元素选择器

javascript - AngularJS 和 Typescript 的 Promise

javascript - Proxyquire 和函数导入

javascript - Sequelize 和 Express 的 API 路由错误

javascript - Node 、Express、域、未捕获的异常 - 仍然丢失