开发者问题收集

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

2019-05-19
1293

我无法在我的 .hbs 文件中获取 row[].column_name ,尽管当我 console.log(row) 时它会显示结果。

错误如下:

TypeError: Cannot read property 0 of undefined

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个回答

TypeError: Cannot read property 0 of undefined

  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);
  });

});
Sridhar
2019-05-20