在EJS页面上从mongoDB访问数据

时间:2019-05-17 21:09:04

标签: node.js mongodb express mongoose ejs

我需要一些hmtl-page javascript才能访问mongoDB数据库中的数据。我用猫鼬从感兴趣的集合中查找所有文档,将它们存储在数组中并在ejs页面上呈现。但是我收到一个错误(“无效或意外的令牌”),并且我认为这是因为_id字段未存储为字符串(它没有“ /”)。我尝试了客户端和服务器端将Id字段转换为字符串但无济于事。为什么不使用字符串或如何转换呢?

app.js

app.get('/stats', function(req,res){
    pomodoroModel.find({}, function(err, studyHistory){
        if(err){
            console.log(err);
        }
        else{
            // send study history
            res.render('graph', {studyHistory: studyHistory});
        }
    });
});

这是studyHistory看起来像console.login的app.js

[ { _id: 5cdf0e14a4dfa719beef5cfa,
    subject: 'Math',
    timeInterval: 36142,
    __v: 0 },
{ _id: 5cdf0f5404467519d5136748,
    subject: 'History',
    timeInterval: 43322,
    __v: 0 } ]

EJS页面

<!DOCTYPE HTML>
<html>
<head>
<script>
window.onload = function () {
let studyHistoryData = <%- studyHistory %>;

浏览器中发生错误的代码

let studyHistoryData = { _id: 5cdf0e14a4dfa719beef5cfa,
subject: 'Math',
timeInterval: 36142,
__v: 0 },{ _id: 5cdf0f5404467519d5136748,
subject: 'History',
timeInterval: 43322,
__v: 0 };

1 个答案:

答案 0 :(得分:1)

尝试将studyHistory呈现为JSON字符串

res.render('graph', {studyHistory: JSON.stringify(studyHistory)});

然后像这样在您的ejs文件中进行解析:

let studyHistoryData = JSON.parse('<%- studyHistory %>');