Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向Pug传递Mongodb查询数据的更好方法_Javascript_Mongodb_Express_Mongoose_Pug - Fatal编程技术网

Javascript 向Pug传递Mongodb查询数据的更好方法

Javascript 向Pug传递Mongodb查询数据的更好方法,javascript,mongodb,express,mongoose,pug,Javascript,Mongodb,Express,Mongoose,Pug,我正在寻找一种更好的方法,在webdev应用程序中将数据传递到index.js文件。注意,我实际上只有大约一个月的webdev经验,所以这可能是由于缺乏经验。以下是我的软件流程: 在呈现页面之前,我在路由处理程序中查询数据。然后,我将这些数据传递到呈现的页面。注意,我需要隐藏一些键VAL。然而,聚合是有效的 exports.getPlotView=asyncreq,res,next=>{ //获取要查询的模块,存储为var.testModel const qParse=new PlotQuery

我正在寻找一种更好的方法,在webdev应用程序中将数据传递到index.js文件。注意,我实际上只有大约一个月的webdev经验,所以这可能是由于缺乏经验。以下是我的软件流程:

在呈现页面之前,我在路由处理程序中查询数据。然后,我将这些数据传递到呈现的页面。注意,我需要隐藏一些键VAL。然而,聚合是有效的

exports.getPlotView=asyncreq,res,next=>{ //获取要查询的模块,存储为var.testModel const qParse=new PlotQueryParsereq.query.parseObj; //console.logqParse //const testblockName=qParse.testblock+Name; //const limitName=qParse.limitName

 const aggregationObj = {$match:
                             {'jobId':qParse.jobId, '<key2>':<val2>, "<key>":"<val>"}
                         }

 const data = await qParse.testModel.aggregate([aggregationObj]);
 console.log(data[0])
 const dataString = JSON.stringify(data[0]);
 //parse the url to make the query
 res.status(200).render('testPlotView', {
     pageHeader: "Test",
     subHead: "Test summary",
     IPn: "IPn",
     inData:dataString
 });
现在,在我的index.js脚本中侦听evenets,数据从页面加载,然后存储以进行后期处理。我希望直接访问变量,而不是隐藏变量,然后访问DOM元素

window.addEventListener'load',函数{ ifwindow.location.href.包括“testplotdata”{ 控制台,记录“这是我的马里奥” //如果我们在测试图数据页中,让我们来绘图 var jsonObject=JSON.parsedocument.querySelector'.hide_data'.innerHTML; console.logjsonObject['testData']

 //post processing code ....

 }
}

同样,我需要一种方法来获取查询的数据,而无需将其保存为DOM元素,然后在外部事件侦听器脚本中访问它


谢谢!

不要将数据存储在HTML中,而是将内联脚本添加到模板中以将其存储在全局变量中。因此,将div.hide_data{inData}替换为:

现在,您只需在外部脚本中作为现成的本机对象访问inData,您需要确保在上述脚本之后加载,将其放在脚本末尾即可


var myData不包含所有由pug预先填充的数据吗?那么为什么不能在JS脚本中直接访问它?@SonNguyen Hi-Son。我在原始帖子中犯了一个错误。我已经编辑了它。我正在使用外部脚本处理变量。有没有办法直接访问通过外部处理脚本中的render传入的值?我发布了答案,以便您看到完全格式化的代码
 //post processing code ....

 }
script.
   var inData = !{inData};   // inData passed by backend must be a string
                             // representing a valid JS object (JSON will do)
// No need: var jsonObject = JSON.parse(document.querySelector('.hide_data').innerHTML);
console.log(inData);    // Go ahead with the data