2016-11-08 91 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'找到課程 –

相關問題