node.js - 在EJS页面上访问mongoDB数据

标签 node.js mongodb express mongoose ejs

我需要一些 on-hmtl-page javascript 才能访问我的 mongoDB 数据库中的数据。我使用 mongoose 从我感兴趣的集合中查找所有文档,将它们存储在数组中并将其呈现在 ejs 页面上。但我收到错误(“无效或意外的 token ”),我认为这是因为 _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 在 app.js 中的 console.logged 的​​样子

[ { _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 };

最佳答案

尝试将 studyHistory 渲染为 JSON 字符串

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

然后在您的 ejs 文件中解析它,如下所示:

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

关于node.js - 在EJS页面上访问mongoDB数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56193603/

相关文章:

javascript - Node.js API 与 express 和 mysql - 获取记录计数、页码……并提供分页

python - 如何根据各种 URL 参数和请求值让 eve 写入不同的数据库?

javascript - 使用 Pug (Jade) 和 JavaScript 的动态表单

ruby - MongoDB 实例故障测试

node.js - 添加到嵌入文档 : to dot, 或不添加到点

javascript - 当我在 Nodejs+Express 中使用 Passport 进行用户身份验证时,发生了奇怪的事情

node.js - 如何在 Node 和 Express 中从 API 调用中获取多个参数

javascript - 为什么作者在文件前使用波形符?

node.js - Mongoose API 文档中的 # 代表什么?

node.js - 用 Create React App 开 Jest : Test suite failed to run - Unexpected token