Не удается прочитать свойство 'длина' из неопределенного (Angular 6) - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь отобразить MySQL таблиц в моем проекте, который сейчас извлекает таблицы из локального json файла.

public getProperties(): Observable<Property[]>{
    return this.http.get<Property[]>(this.url + 'properties.json');

  }

При замене URL-адреса на тот, с которого я извлекаю табличный объект mysql, используя NodeJs и express, я получаю данную ошибку в консоли , Вот как я поступил:

public getProperties(): Observable<Property[]>{
    return this.http.get<Property[]>('http://localhost:3000/');

  }

Есть ли способ, которым я могу успешно передать URL для доступа к MySQL таблицам?

Вот мой NodeJS код:

router.get('/', function(req, res, next) {
  res.setHeader("Content-Type", "text/html");

  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  console.log("Function called")
  con.query('SELECT * FROM authors', (err,rows) => {
    if(err) throw err;

    console.log('Data received from Db:');
    console.log(rows);
    DBRows = rows;

    console.log("Data sent")
    res.send(JSON.stringify(DBRows));
  });
});

  con.query('SELECT * FROM authors', (err,rows) => {
    if(err) throw err;

    console.log('Data received from Db:');
    console.log(rows);
    DBRows = rows;

    console.log("Data sent")
    JSON.stringify(DBRows);
    res.send(JSON.stringify(DBRows));

  });

});

1 Ответ

0 голосов
/ 24 марта 2020

Каков результат "JSON .stringify (DBRows)"?

Вы ожидаете массив Property в результате (Property []), но возвращаете строковый DBRows, который, вероятно, является object

Вам нужно изменить код, чтобы результат соответствовал ожидаемому. Если результат «JSON .stringify (DBRows)» равен

{
   values: [ {/* DbRow */}, {/* DbRow */}, ... ]
}

, то в вашем сервисе вам следует ожидать аналогичного объекта, например:

export class Response {
   values: Property[];
}
...
return this.http.get<Response>('http://localhost:3000/');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...