Javascript 仅在客户端上显示标题将返回未定义

Javascript 仅在客户端上显示标题将返回未定义,javascript,mongodb,express,mongoose,ejs,Javascript,Mongodb,Express,Mongoose,Ejs,我在mongoosejs中定义了一个模式,如下所示: var uploadSchema = mongoose.Schema({ title : String, happy : String, }); 我希望数据库中的数据显示在客户机上(我使用ejs进行模板化): 在客户端上显示它: <div class="well"> <p><%= course %></p> </div&

我在mongoosejs中定义了一个模式,如下所示:

var uploadSchema = mongoose.Schema({
    title            : String,
    happy            : String,
});
我希望数据库中的数据显示在客户机上(我使用ejs进行模板化):

在客户端上显示它:

<div class="well">
    <p><%= course %></p>
</div> 

但它只是在客户端返回未定义的。我该怎么办?

看起来您正在返回一个数组,但是在传递给渲染的对象中没有设置正确的变量

尝试一下(这应该是阵列中的第一个课程):


如果你没有课程,这将不起作用。您可能应该循环浏览您返回的所有课程并将其打印出来,或者更改Upload.find以上载.findOne以仅从数据库中获取1

简单地说,您不能从Mangose访问文档的各个字段?但是整个文档显示时没有任何问题?是的,这正是问题所在。但是我如何修复它呢?

有效吗?不,无效。它返回未定义的。你能复制粘贴你的数据样本吗?例如,当您尝试
res.render('./pages/yay.ejs',{happy:course})
时所显示的内容,谢谢您的帮助。不过我还有一个问题。如果我将Upload.find更改为findOne,会发生什么情况。另外,如何获取数组中的所有课程。如果更改为
Upload.findOne
,则不需要执行
courses[0]。title
可以将其更改为
courses.title
,因为Upload.findOne从数据库返回单个元素,而不是数组。要打印所有需要更新模板的内容,以循环查看结果
,这会再次导致未定义。
<div class="well">
    <p><%= course %></p>
</div> 
app.get('/yay', function (req, res, next){
            Upload.find({}, function (err, course){
                res.render('./pages/yay.ejs', {course: course.title});
            });
        });
app.get('/yay', function (req, res, next){
  Upload.find({}, function (err, courses) {
    res.render('./pages/yay.ejs', { happy: courses[0].title });
  });
});