2013-06-30 54 views
2

我正在使用Express,Hoganjs,Nodejs。Nodejs + Express - 不能調用未定義的方法'json'

下面的代碼不斷返回「500類型錯誤:無法調用未定義的方法‘JSON’」

我想,有什麼毛病我怎麼叫getUsers,但我太多的新手到數字出來。我所提到的教程或論壇都沒有提供幫助。

exports.admin = function(req, res){ 
getUsers(function(error, res){ 
    res.render('admin', { 
     title: 'Admin', 
     userlist: res 
    }); 
}); 
}; 



function getUsers(req, res) { 
res.json([ 
    {username: "fake", permission: "admin" }, 
    {username: "fake2", permission: "user" } 
]) 
} 

exports.getUsers = getUsers; 
+0

btw ..此文件位於我的/ routes文件夾中,並與hoganjs視圖相關。 – christopha

+0

你在'getUsers()'中傳遞'res'的地方? – Blender

+0

我不知道我會在哪裏。我想我認爲res是答案,我不需要傳入它。我來自PHP世界,儘管在節點上閱讀了2本書,但回調的內容讓我感到困惑。 – christopha

回答

0

OK,讓您的代碼段的格式不正確,因此難以閱讀,但我認爲exports.admin被稱爲是需要req, res明確路線。到現在爲止還挺好。然後您撥打併通過回撥,但不會回撥,也需要req, res。目前還不清楚你想要做什麼,但這樣的事情會是合理的:

exports.admin = function(req, res) { 
    loadUsers(function (error, users) { 
    if (error) { 
     return res.status(500).send(error); 
    } 
    res.render('admin', { 
     title: 'Admin', 
     userlist: users 
    }); 
    } 
}; 

exports.getUsers = function(req, res) { 
    loadUsers(function (error, users) { 
     if (error) { 
     return res.status(500).send(error); 
     } 
     res.send(users); 
    }); 
} 

function loadUsers(callback) { 
    process.nextTick(function() { 
    callback(null, [ 
     {username: "fake", permission: "admin" }, 
     {username: "fake2", permission: "user" }] 
    ); 
    }); 
} 

一個更好的模式將代碼loadUsers中間件,僅供參考。

+0

謝謝彼得。該代碼工作,但它仍然是異步的 – christopha

+0

我再次編輯它來模擬一個異步'loadUsers'函數。 –

相關問題