Node.js 如何使用猫鼬和翡翠在NodeJ上显示猫鼬字段?
目前,我看到的所有内容都显示整个文档,而不仅仅是一个字段。如何仅显示一个字段 我已经尝试了以下方法,但是我得到了“未定义”的结果,在那里我看不到任何显示 路1主js:Node.js 如何使用猫鼬和翡翠在NodeJ上显示猫鼬字段?,node.js,mongoose,pug,Node.js,Mongoose,Pug,目前,我看到的所有内容都显示整个文档,而不仅仅是一个字段。如何仅显示一个字段 我已经尝试了以下方法,但是我得到了“未定义”的结果,在那里我看不到任何显示 路1主js: // app.js var schema = new mongoose.Schema({ a_field : String }, { collection : 'the_col_with_data' }); var DocumentModel = mongoos
// 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 }
与猫鼬的交互是异步的。这意味着,您不能依赖mongoose操作的返回值。您必须在回调中执行对文档进行操作的逻辑。因此,在您的情况下,
a_文档
不会指向您要查找的文档。相反,您必须在回调中使用文档:
app.get('/', function(req, res) {
DocumentModel.findOne({}, function(err, doc) {
if(err) {
res.send(500);
return;
}
res.render('index', {pass_var: doc});
});
});
非常感谢尼尔什!自从我不熟悉Node.js以来,还有一个后续问题:在您的代码中,
res.render()
位于第二级回调中。这是否意味着回调可以有很多层次,它们只是递归地向外返回到父回调?你知道我在哪里可以读到更多关于这方面的信息吗?是的,你经常有几个级别的回调。为了让它更具可读性,我建议您看看现有的许多“流”库中的一个,比如,或者,或者它们都被称为什么。