簡體   English   中英

使用ID從數組中選取對象。 Node.js和Express

[英]Pick out object from array using id. Node.js and Express

我有一個學校的任務,我們正在使用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()來選擇它,盡管不是必需的。 但是我不能讓它工作。 我在這里嘗試了很多,所以我知道上面的解決方案不起作用。

使用該解決方案,由於indexOf,我正在獲得ID為6的課程,所以那不是正確的,但是你們可以看到我希望的問題。

首先檢查您是否有字符串數組。

您可以通過對所有項目調用JSON.parse(i)來使用Array.prototype.map()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是請求參數id。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM