如何修复“类型错误无法读取未定义的属性0”?

时间:2019-05-19 15:58:07

标签: node.js express

row[].column_name显示结果时,无法在我的.hbs文件中完全获得console.log(row)

错误如下:

  

TypeError:无法读取未定义的属性0

router.get('/:id/baiviet', (req, res) => {
  var id = req.params.id;
  var p = baivietModel.allByCat(id);
  var q = chuyenmuc.singel(id); // singel(id) return a promise
  var row;

  q.then(rows => {
    row = rows;
  });

  p.then(rows => {
    for (const cm of res.locals.lcChuyenmuc) {
      if (cm.ID == +id) {
        cm.isActive = true;
      }
    }
    res.render('vwBaiviet/byCat', {
      baiviet: rows,
      CM: row[0]
    });
  }).catch(err => {
    console.log(err);
  });
});

我的.hbs文件:

{{this.CM.Name}}

1 个答案:

答案 0 :(得分:0)

  

TypeError:无法读取未定义的属性0

  var row;

row的值初始化为undefined,因此会出现该错误。

如果您使用Promise.all,则可以解决两个承诺并立即发送一个值。

router.get('/:id/baiviet', (req, res) => {
  var {id} = req.params;

  Promise.all([
    baivietModel.allByCat(id),
    chuyenmuc.singel(id) // singel(id) return a promise
  ]).then(([prows, qrows]) => {

    // ... your other code

    res.render('vwBaiviet/byCat', {
      baiviet: prows,
      CM: qrows[0]
    });
  }).catch(err => {
    console.log(err);
  });

});