简单的数据库mongo查询出错了?

嘿,我试图从我的index.js文件查询数据库(mongodb),然后将查询中的值返回到一个variables,所以我可以使用该variables显示网站上的个人信息。 我目前有这个代码,但它给我的问题。 试图找出如何正确地查询它。 我正在查询电子邮件,但我想根据电子邮件查询提取名字。 我为我的视图引擎使用node.js和jade。

var mongoose = require('mongoose') , db = mongoose.createConnection('mongodb://localhost/test5'); var user = function (name) { var name = db.users.find({ email: 'works@gmail.com' }).pretty(); console.log(name); return name; }; exports.index = function(req, res) { res.render('index', { title: 'Weblio', user: user}); }; 

看起来你使用的是Mongoose,所以我build议你使用查询function,这些function在过去对我来说效果很好。 这也有助于为存储在MongoDB中的数据build立Mongoose模型。

试试这个(注意:它没有经过testing,但是我从一个正常运行的程序中提取):

 var mongoose = require('mongoose') , Schema = mongoose.Schema; mongoose.connect('mongodb://localhost/test5'); var UserSchema = new Schema({ email: { type: String, index: true }, firstName: { type: String }, lastName: { type: String } }); mongoose.model('User', UserSchema); var User = mongoose.model('User'); exports.index = function(req, res) { User.findOne({ email: "someone@something.com" }, function(err, user) { if(err) { res.send(err); } else { console.log(user.firstName); res.render('index', {title: 'Weblio', user: user.firstName}); } }); } 

几乎所有节点上的IO都是asynchronous的,这意味着你的find方法不会返回实际的结果,而是一个promise,或者期待一个callback,它将调用结果。

尝试这个:

 var mongoose = require('mongoose') , db = mongoose.createConnection('mongodb://localhost/test5'); exports.index = function(req, res) { db.users.find({ email: 'works@gmail.com' }, function(err, data){ if(err){ return req.send(500); } res.render('index', { title: 'Weblio', user: JSON.stringify(data)}); }); };