2016-11-08 3 views
0

私は学校からの仕事があり、Node.js & Expressで作業しています。今は、私は立ち往生している。idを使用して配列からオブジェクトを取り出します。 Node.jsとExpress

私はこれを私のブラウザに貼り付けます。http://localhost:3000/courses/2私は、以下の配列でIDが2のコースを取得する必要があります。 Thistはここ

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}'; 

...アレイの一部である私のコードは私の問題は、ループのために、我々は、)のindexOf(とそれを選び出すしようとする命令をhadeないです

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); 
}) 

ですしかし必要です。しかし、私はそれを働かせることはできません。私はここでたくさん試しました。私が知っている以上の解決策は機能していません。

このソリューションでは、indexOfのため6のIDを持つコースを取得していますので、そうではありませんが、私たちは問題を見ることができます。

+0

あなたはオブジェクトIDまたは配列インデックス – Nivesh

+0

のIDを参照していて、オブジェクトを配列の文字列として格納しています – Nivesh

+0

ああ、申し訳ありませんが、ブラウザではlocalhostを書く:3000/2私は "_id"が必要です:2、 "courseId": "IK060G" ..表示する – mackeemackee

答えて

0

まず、文字列の配列があることを確認します。

Array.prototype.map()を使用して、coursesからオブジェクトの新しい配列を作成するには、すべてのアイテムに対してJSON.parse(i)を呼び出します。

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であること:

次に、与えられたテスト関数を満たし 配列の最初の要素を返すためにArray.prototype.find()を使用することができます。

+0

私の悪い、そのオブジェクトではありません。文字列として格納されます – mackeemackee

+0

更新の回答を確認してください。最初にすべてのコースをマッピングして新しいオブジェクト配列を作成し、 'id === 2' –

関連する問題