为什么我的json对象的`email`属性不显示在我的模板中?

有最奇怪的问题。 我无法显示对象的email属性。 我正在使用Mongoose / Express / Jade。 我正在做一个:

 User.find({ _id : { $in : req.project.subscribers } } , function (err, subs){... 

这工作得很好,并返回我的订阅者列表在subs var,看起来像这样:

 { _id: 4f34832b9398bec847000002, email: 'steve@example.com', first_name: 'Steve', last_name: 'McQueen', status: 'active', username: 'steve', updated_at: Fri, 10 Feb 2012 02:38:35 GMT, created_at: Fri, 10 Feb 2012 02:38:35 GMT, role: 'subscriber' }, { _id: 4f3484a9eceb82b548000002, email: 'paul@example.com', first_name: 'Paul', last_name: 'Stanley', status: 'active', username: 'paul', updated_at: Mon, 02 Apr 2012 15:09:56 GMT, created_at: Mon, 02 Apr 2012 15:09:56 GMT, role: 'subscriber' } 

然后我把它传递给我的玉视图在一个名为订户的变种。 所有这一切都很好,当我在我的模板中迭代subscribers者时,想要显示每个订阅者的email属性时,问题就出现了。 由于某种原因,这只是email的问题! 它不显示任何email ,只是空白。

 ul each sub in subscribers li= sub.email 

如果我使用任何其他属性代替email它工作正常。 所以下面的显示非常好:

 ul each sub in subscribers li= sub.username 

请让我知道,如果我可以提供更多的细节。

编辑Declan:

执行以下操作:

 ul each val, key in subscribers li #{key}: #{val} 

产量:

  0: { _id: 4f34832b9398bec847000002, email: 'foo', first_name: 'Steve', last_name: 'McQueen', status: 'active', username: 'steve', updated_at: Fri, 10 Feb 2012 02:38:35 GMT, created_at: Fri, 10 Feb 2012 02:38:35 GMT, role: 'subscriber' } 1: { _id: 4f3484a9eceb82b548000002, email: 'foo', first_name: 'Paul', last_name: 'Stanley', status: 'active', username: 'paul', updated_at: Mon, 02 Apr 2012 16:05:51 GMT, created_at: Mon, 02 Apr 2012 16:05:51 GMT, role: 'subscriber' } 

我回答我自己的问题,因为它最终变得愚蠢和明显(通常是,不是吗?)。

当使用mongoose和属性不显示时,请确保您有mongoose模式中定义的属性。 不知何故,当我创build我的模式时,我忽略了电子邮件字段,它只是没有定义。 即使它在数据库中的实际logging,mongoose不在乎,只会显示你为对象/模式定义的东西。

感谢大家的努力,如果没有别的,你帮我find我的答案。

张贴作为答案,以便更好的代码格式。

我刚回到家,把一个testing应用程序扔在一起,看看我是否可以复制你的错误。 到目前为止,我还没有能够。 这是我的文件

注意:我没有使用数据库进行testing,所以问题可能是如何从数据库中获取数据到模板中:

index.jade

 ul each sub in subscribers li= sub.email 

路线/ index.js

 exports.index = function(req, res){ res.render('index', { subscribers: [{ "_id": "4f34832b9398bec847000002", "email": "steve@example.com", "first_name": "Steve", "last_name": "McQueen", "status": "active", "username": "steve", "updated_at": "Fri, 10 Feb 2012 02:38:35 GMT", "created_at": "Fri, 10 Feb 2012 02:38:35 GMT", "role": "subscriber" }, { "_id": "4f3484a9eceb82b548000002", "email": "paul@example.com", "first_name": "Paul", "last_name": "Stanley", "status": "active", "username": "paul", "updated_at": "Mon, 02 Apr 2012 15:09:56 GMT", "created_at": "Mon, 02 Apr 2012 15:09:56 GMT", "role": "subscriber" }] }) }; 

app.js

 var express = require('express') , routes = require('./routes'); var app = module.exports = express.createServer(); // Configuration app.configure(function(){ app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(__dirname + '/public')); }); app.configure('development', function(){ app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); }); app.configure('production', function(){ app.use(express.errorHandler()); }); // Routes app.get('/', routes.index); app.listen(8000); console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env); 

你可以发布你的路线/ app.get函数将所有的数据库处理代码以及?

玉看起来对我来说,也许这是你的请求处理程序中的东西,你如何将它添加到视图来呈现。 这个简单的例子工作:

服务器端请求处理程序

 app.get('/', function(req, res) { var users = [{ _id: '4f34832b9398bec847000002', email: 'steve@example.com', first_name: 'Steve', last_name: 'McQueen', status: 'active', username: 'steve', updated_at: "Fri, 10 Feb 2012 02:38:35 GMT", created_at: "Fri, 10 Feb 2012 02:38:35 GMT", role: 'subscriber' }, { _id: '4f3484a9eceb82b548000002', email: 'paul@example.com', first_name: 'Paul', last_name: 'Stanley', status: 'active', username: 'paul', updated_at: "Mon, 02 Apr 2012 15:09:56 GMT", created_at: "Mon, 02 Apr 2012 15:09:56 GMT", role: 'subscriber' }]; res.render('index.jade', {subscribers : users }); }); 

index.jade的内容…

 html body ul each sub in subscribers li= sub.email 

输出…

 <html> <body> <ul> <li>steve@example.com</li> <li>paul@example.com</li> </ul> </body> </html>