如何使用Mongoose和Jade在Nodejs上显示Mongo字段?

时间:2013-05-13 03:53:02

标签: node.js mongoose pug

目前我看到的一切都是显示整个文档,而不仅仅是一个字段。我如何只显示一个字段?

我已经尝试了以下但是我得到了“未定义”的地方,我没有看到任何显示。

方式1主要的js:

// app.js

var schema = new mongoose.Schema({ a_field : String }, 
                                 { collection : 'the_col_with_data' });
var DocumentModel = mongoose.model('Doc', schema);
var a_document = DocumentModel.findOne({}, callback);

app.get('/', function(req, res) {
    res.render('index', {
                            pass_var: a_document.a_field
                        });
});

方式1观点:

// index.jade

#{ pass_var }

方式2主要的js:

// app.js

var schema = new mongoose.Schema({ a_field : String }, 
                                 { collection : 'the_col_with_data' });
var DocumentModel = mongoose.model('Doc', schema);
var a_document = DocumentModel.findOne({}, callback);

app.get('/', function(req, res) {
    res.render('index', {
                            pass_var: a_document
                        });
});

方式2观点:

// index.jade

#{ pass_var.a_field }

1 个答案:

答案 0 :(得分:1)

与mongoose的交互是异步的。这意味着,您不能依赖于猫鼬操作的返回值。您必须在回调中执行对文档进行操作的逻辑。因此,在您的情况下,a_document并未指向您要查找的文档。相反,您必须在回调中使用该文档:

app.get('/', function(req, res) {
    DocumentModel.findOne({}, function(err, doc) {
        if(err) {
            res.send(500);
            return;
        }
        res.render('index', {pass_var: doc});
    });
});