javascript - 使用 Passed Mongodb 通过 res.render ('jadeview' 快速检索数据,在 Jade View 中邮寄 :mongodbretriveddata) in script. 标签?

标签 javascript node.js mongodb express pug

我通过 routes.js 中的以下代码将 mongoose 检索到的数据传递到我的 node/express 应用程序中的 jade View

        app.get('/newrequest', function (req, res) {
    Account.find({}, function (err, data) {
        if (err) {}

        res.render('newrequest', {
            user: req.user,
            mail: data
        });

    });
});

现在我想提取每个值并通过 JavaScript 将邮件对象存储在脚本标记中的数组中,该邮件对象传递到我的 jade View ,代码如下,我正在使用 Jquery UI 自动完成功能源是下面名为 availabletags 的数组, 我正在尝试的是获取邮件对象中的值并将这些值输入到 availabletags 数组, 我尝试了 - 对于邮件中的每个项目 #{item.email} ,我想要 mongodb 模式的电子邮件文档值,但我无法将值获取到 availbletags 数组,任何人都可以帮我解决这个问题,我不知道我们是否可以在 Jade 的脚本标签中直接使用#{mail['0']['email']},目前我遇到以下错误

     Express
500 TypeError: C:\Users\chakravarthy\Documents\app\work\views\newrequest.jade:13 
11| $(function() { 
12| var availableTags = [ 
> 13| #{item.email} 
14| ]; 
15| $( "#tags" ).autocomplete({ 
16| source: availableTags Cannot read property 'email' of undefined

下面是我的 Jade View 代码

 !!! 5
 html
 head
title= title
meta(name='viewport', content='width=device-width, initial-scale=1.0')
link(href='/css/bootstrap.min.css', rel='stylesheet', media='screen')
script(src='js/jquery.js')
script(src='js/jquery-ui.js')  
script(src='js/bootstrap.min.js')
script.
 $(function() {
    var availableTags = [
         - if(mail.length)
         each item in mail    
           #{item.email} 
       ];
    $( "#tags" ).autocomplete({
    source: availableTags
      });
    });   
body
h1 New Requests Page
.container
form(role='form', action="/requestcomplete",method="post", style='max-width: 300px;')
  .form-group
      input.form-control(type='text', name="requesttype", placeholder='Enter type of Request')
  .form-group
    textarea.form-control(type='text', name="requestdescription", placeholder='Enter Request Description')
div.ui-widget
  label(for="tags") Tags:
  input#tags
  br
  br
  button.btn.btn-default(type='submit') Submit
   
  a(href='/requests')
    button.btn.btn-primary(type="button") Cancel    

我怎样才能在 Jquery 或脚本中的 JavaScript 中获取输入标签的自动完成值。在 Jade 代码中标记这里?

最佳答案

我们可以通过将 routes.js 中的 JSON Stringfied 数据传递给我们的 Jade View 来获取 Node 脚本标签中 availabletags 数组的值,如下所示

   app.get('/newrequest', function (req, res) {
       Account.find({}, function (err, data) {
          if (err) {}

          res.render('newrequest', {
            user: req.user,
            mail: JSON.stringify(data)
          });

       });
    });

在 Jade View 的脚本标签中,我们可以使用 JSON 字符串数据,即传递给 Jade 的邮件变量,如下所示

         script.
         $(function() {
         var availableTags = !{mail};

         var data = [];
         for(var i=0;i<availableTags.length;i++){
         data.push(availableTags[i]['email'])
          }
         console.log(data);
         $( "#tags" ).autocomplete({
         source: data
           });
         });

关于javascript - 使用 Passed Mongodb 通过 res.render ('jadeview' 快速检索数据,在 Jade View 中邮寄 :mongodbretriveddata) in script. 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21752445/

相关文章:

javascript - Vuejs - 无法读取未定义的属性 '_withTask'

javascript - 在 javaScript 中,innerHTML 始终返回 'undefine'

javascript - 如何获取连续数组元素的总和

python - 试图制作一个 whatsapp 机器人

node.js - 如何在 useEffect() Hook 中使用异步方法

javascript - 将动态生成的表格的单元格内容设为超链接

javascript - Node 服务器 http close 事件总是触发

mongodb获取在某个文档之后插入的元素

mongodb - 无法远程连接到 mongodb

java - Spring 和 MongoDB。查找最后存储的对象