Nano Hash - криптовалюты, майнинг, программирование

Доступ к данным из mongoDB на странице EJS

Мне нужен 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-страница

<!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

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

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

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

let studyHistoryData = JSON.parse('<%- studyHistory %>');
17.05.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..