Доступ к данным из mongoDB на странице EJS - PullRequest
1 голос
/ 18 мая 2019

Мне нужен некоторый javascript на странице hmtl, чтобы иметь возможность доступа к данным из моей базы данных mongoDB. Я использую mongoose, чтобы найти все документы из интересующей меня коллекции, сохранить их в массиве и отобразить на странице 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.logged в app.js

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

EJS page

<!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 Ответ

1 голос
/ 18 мая 2019

Попробуйте отобразить studyHistory как строку JSON

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

и затем проанализируйте его в вашем файле ejs следующим образом:

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