2016-11-08 90 views
0

我有一个来自学校的任务,我们正在使用Node.js & Express。现在我卡住了。使用ID从数组中挑选出对象。 Node.js和Express

如果我将其粘贴到我的浏览器http://localhost:3000/courses/2我需要在下面的数组中获得ID为2的课程。编辑方针是阵列的一部分......

courses[0] = '{"_id":1,"courseId":"DT162G","courseName":"Javascript-baserad webbutveckling","coursePeriod":1}'; 
courses[1] = '{"_id":2,"courseId":"IK060G","courseName":"Projektledning","coursePeriod":1}'; 
courses[2] = '{"_id":3,"courseId":"DT071G","courseName":"Programmering i C#.NET","coursePeriod":2}'; 
courses[3] = '{"_id":4,"courseId":"DT148G","courseName":"Webbutveckling för mobila enheter","coursePeriod":2}'; 

这里是我的代码

router.get('/:id', function(req, res, next) { 

    var id = req.params.id; 
    var get_course = "No course found!"; 


     for(row of courses){ 
      course_id = row; 
      // MY PROBLEM IS HERE 
      if(course_id.indexOf(id) > 0) get_course = row; 
      // 
     } 

    console.log(get_course); 
    res.contentType('application/json'); 
    res.send(get_course); 
}) 

我的问题是在for循环中,我们哈德指令尽量挑选出来的indexOf与(),不尽管如此。但我无法让它工作。我在这里尝试了很多,所以上面的解决方案我不知道。

有了这个解决方案即时获得与id为6的课程,因为indexOf,所以这是不正确的,但你们可以看到我希望的问题。

+0

你是什么意思的ID为2,你指的是对象或数组索引 – Nivesh

+0

中的_id,并且你正在将对象存储为数组中的字符串 – Nivesh

+0

对不起,如果在浏览器中编写localhost:3000/2在地址字段中,然后我需要“_id”:2,“courseId”:“IK060G”..要显示 – mackeemackee

回答

0

首先检查你是否有一个字符串数组。

您可以使用Array.prototype.map()通过在所有项目上调用JSON.parse(i)来创建一个新的courses对象数组。

然后你可以使用Array.prototype.find()成满足提供的测试功能的数组中返回第一个元素 :

var courses = ['{"_id":1,"courseId":"DT162G","courseName":"Javascript-baserad webbutveckling","coursePeriod":1}','{"_id":2,"courseId":"IK060G","courseName":"Projektledning","coursePeriod":1}','{"_id":3,"courseId":"DT071G","courseName":"Programmering i C#.NET","coursePeriod":2}','{"_id":4,"courseId":"DT148G","courseName":"Webbutveckling för mobila enheter","coursePeriod":2}'], 
 
    id = 2, 
 
    course = courses.map((i) => JSON.parse(i)).find((c) => c._id === id); 
 

 
console.log(course);

注意id = 2是请求PARAM ID。

+0

我的不好,它不是一个对象。它存储为一个字符串 – mackeemackee

+0

检查更新答案。首先映射所有课程以创建一个新的对象数组,然后使用'id === 2'找到课程 –

相关问题