2013-09-18 3 views
0

Я пытаюсь динамически загружать содержимое из этого объектаЯ имею «» req.param.id вопросы

projects = { 
    test1:{ 
     'name': 'Test', 
     'description': 'This is just a test description for a test project.', 
     'img': { 
      'thumbnail': '/img/260x180.png', 
      'screenshot': '/img/1024x500.png' 
     }, 
     'link': '/projects/test1' 
    }, 
    test2:{ 
     'name': 'Test2', 
     'description': 'This is just a test description for a test project.', 
     'img': { 
      'thumbnail': '/img/260x180.png', 
      'screenshot': '/img/1024x500.png' 
     }, 
     'link': '/projects/test2' 
    } 
    }; 

следующего

var id = req.params.id; 
res.send('index/project',{title: title, project: projects.id}); 

и возвращается как неопределенные. Я также попытался использовать JSON.stringify(), и это тоже не сработало. Есть идеи?

+1

Что такое 'id'? Каков URL-адрес запроса? Что такое project.id? С точки зрения JS это на самом деле не имеет особого смысла ... вам придется подробно остановиться на том, что вы хотите сделать, если хотите помочь :) –

+0

Помимо проблемы с кронштейном/имуществом, я считаю, что res .send ожидает два параметра: один, код состояния HTTP и два, тело ответа HTTP. Вероятно, вы хотите: res.render ('templateName', {title: title}) ' – Plato

ответ

4

Я думаю, что вы могли бы искать в квадратных скобках обозначения:

res.send('index/project',{title: title, project: projects[id]}); 
// Change here ------------------------------------------^^^^ 

В JavaScript, вы можете получить доступ к свойствам объекта либо с помощью точечной нотации и имя буквального свойства (obj.foo), или в квадратных скобках обозначения и строки название свойства (obj["foo"]). В последнем случае, конечно, строка может быть результатом любого выражения, включая ссылку на переменную. Таким образом, при условии, req.params.id это строка, как "test1", "test2", и такие, так как вы кладете, что в id вы будете использовать projects[id] обратиться к test1 или test2 свойств projects.

+0

Интересно. Он работал отлично, я просто хочу убедиться, что понимаю, почему это сработало. Это потому что, когда я называю «projects.id», JavaScript ищет свойство и значение для возврата, а когда «проекты [id]» называются JavaScript, выполняется поиск строки, в которой находится переменная id. –

+0

@CollinMcGuire: 'проекты .id' ищет свойство с именем 'id' на объекте, на который ссылаются' projects'. 'projects [id]' ищет свойство с именем из строки в переменной 'id' объекта, на который ссылаются' projects'. Например, из моего примера в ответе, все они выглядят одинаково: 'obj.foo' | 'obj [" foo "]' | 'obj ['f' + 'o' + 'o']' | 'var f =" foo "; OBJ [F] ' –

Смежные вопросы