将对象从服务器发送到客户端(node / express / ejs)

时间:2015-12-13 04:10:15

标签: javascript node.js express ejs

我需要在我的视图中访问用户对象。

在我的服务器代码中,我有:

res.render("profile.ejs", { user: userObj });

...其中userObj是一个很好的键值对象,包含我的所有数据。

在我的EJS文件中,我有类似的内容:

<h5 class="userName"><%= user.firstname %> <%= user.lastname %></h5>

......没有打印任何东西。

我知道它不起作用,因为它试图将我的userObj转换为字符串,而我需要做类似“user:JSON.stringify(userObj)”的操作,但是我如何像对象一样访问它在我看来?

-

更新

所有这些代码实际上都很好。我傻了弄清楚我的数据库查询不正确。

我以为是: { name: 'name', blah: 'blah' }

但它是:{ key: {name: 'name', blah: 'blah'} }

我没有注意到。

1 个答案:

答案 0 :(得分:3)

仔细检查拼写错误和大写/小写问题。 您可以使用以下方式打印对象的内容:

var util = require('util');
console.log(util.inspect(userObj));

您不必将json转换为字符串以将其传递给视图。它应该与json一起使用。你甚至可以在express和ejs中打印一个json。它应该以递归方式打印json中的所有键值对。

在正常配置中,您可以这样做。

var userObj = {
    firstname: 'Name',
    lastname: 'anything'
};
res.render("profile.ejs", { user: userObj });

并在您的视图中

<h5 class="userName"><%= user.firstname %> <%= user.lastname %></h5>