В прошлом мне удалось подключиться к postgres db с использованием промежуточного программного обеспечения koa-pg
, подключенного к базе данных, размещенной на Heroku, но у меня возникают проблемы с подключением к локально размещенная база данных.Не удалось запросить базу данных PG с использованием промежуточного программного обеспечения koa-pg на Koa на localhost
В частности, у меня есть ошибка TypeError: Cannot read property 'client' of undefined
.
Следующая моя установка на одном файле приложения:
const koa = require('koa');
let route = require('koa-route'); // For calling specific routes
let request = require('koa-request'); // For RESTful requests
let paramify = require('koa-params');
var koaPg = require('koa-pg');
let pg = require('pg'); // .native;
let cors = require('koa-cors');
let parser = require('xml2js').parseString;
// pg.defaults.ssl = true;
route = paramify(route);
let param = route.param;
let get = route.get;
let app = koa();
let appPort = (process.env.PORT || 3000)
app.use(cors());
app.use(koaPg('postgres://localhost:5432/ttc_clustering_dev'));
И следующий путь, на котором этот вопрос лежит:
app.use(route.get('/initialDefaultRouteQuery', function *() {
let options = {
url: 'http://webservices.nextbus.com/service/publicXMLFeed?command=vehicleLocations&a=ttc&r=60'
}
let xmlResponse = yield request(options)
let jsResponse = ''
parser(xmlResponse.body, function(err,result){
//Extract the value from the data element
jsResponse = result
if (err !== null) {
console.log(`Error: ${err}`)
} else {
console.log('Success in parsing from XML to JSON')
}
});
let i = 0
while (i < jsResponse.body.vehicle.length) {
let query_content = `INSERT INTO temp_records (route_id, bus_id, capture_time, geometry) VALUES ('60', '${jsResponse.body.vehicle[i].$.id}', ${Date.now() - (jsResponse.body.vehicle[i].$.secsSinceReport * 1000)}, ST_GeomFromText('POINT(${jsResponse.body.vehicle[i].$.lng} ${jsResponse.body.vehicle[i].$.lat})'))`
let result = yield pg.db.client.query_(query_content)
console.log('result:' + result)
i += 1;
}
this.body = 'Finished!'
}));
Вероятно, я использовал правильную установку в соответствии с the docs, но, вероятно, что-то мне не хватает здесь. Кто-нибудь еще видит, где я падаю?
Полный файл можно найти здесь: https://github.com/brianbancroft/ttc-clustering/blob/add-records-to-db/server/app.js