【问题标题】:Node.js - print result from sqlNode.js - 从 sql 打印结果
【发布时间】:2016-12-02 14:08:24
【问题描述】:

我正在尝试从 db 运行选择查询并打印结果。但即使我在控制台中看到结果,我在索引页面中也看不到。 (但是我在控制台中看到了结果,但它也没有正确显示。我在 db 中有 2 行,但我看到每行有 3 行。所以控制台中的结果是:2X3=6 行。)我放了关于控制台结果的屏幕截图问题结束。

app.js 中的代码

app.use('/', routes, function(req, res){
    pg.connect(connect, function(err, client, done){
    if(err){
      return console.error('errrr', err)
    }
    client.query('select * from recipes', function(err, result){
    if(err){
      return console.error('error running query', err);
    }
     console.log(result.rows);
     res.render('index.njk', { recipes: result.rows});
     done(); 
    });
    }); 
    });

index.njk 中的代码

<ul>
  {% for name, item in recipes %}
  <li>{{ name }}: {{ item.name }}</li>
  {% endfor %}
</ul>

this is result of the console 你能帮我解决它吗?

【问题讨论】:

    标签: javascript node.js postgresql express nunjucks


    【解决方案1】:

    看起来(通过您的控制台图片)result.rows 是一个数组数组,其中包含 2 个值。因此,在遍历 index.njk 中的值时,recipes 是一个数组数组,不包含具有 name 属性的项目。

    如果您设置了配方:result.rows[0],它应该提供快速修复:

    res.render('index.njk', { recipes: result.rows[0]});

    这允许您获取数组数组中的第一个元素,这没关系,因为其中包含的数组只有 1 个元素(您真正想要的 2 个项目!)。在执行此操作之前,您应该检查 result.rows.length > 0,以免超出范围并出现错误。

    if(result.rows.length > 0) {
      res.render('index.njk', { recipes: result.rows[0]});
    }else {
      console.log('No rows found in DB');
    }
    

    【讨论】:

    • 还有其他想法吗?
    【解决方案2】:

    我通过在 index.js 中使用以下代码块而不是使用 app.js 解决了我的问题。我不确定这是正确的方法,但现在工作正常。如果方法不正确,请让我纠正。

    router.get('/', function(req, res){
      pg.connect(connect, function(err, client, done){
       if(err){
        return console.error('errrr', err)
        }
       client.query('select * from recipes', function(err, result){
    
        if(err){
          return console.error('error running query', err);
         }
        if(result.rows.length > 0) {
            res.render('index.njk', { recordResult: result.rows});
           console.log(result.rows);
         }else {
            console.log('No rows found in DB');
          }
        done() 
        });
      }); 
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 2018-07-16
      • 1970-01-01
      • 1970-01-01
      • 2022-08-06
      • 1970-01-01
      相关资源
      最近更新 更多