2016-02-07 2 views
0

Я пытаюсь получить данные на веб-страницу из sqlite3 базы данных в моем Экспресс приложение, которое я следующий в моем маршруте файлЭкспресс + sqlite3 TypeError: Не удается прочитать свойству

var express = require('express'); 
var router = express.Router(); 

var fs = require("fs"); 
var file = "./database/testDB.db"; 
var exists = fs.existsSync(file); 

var sqlite3 = require("sqlite3").verbose(); 
var db = new sqlite3.Database(file); 

/* GET home page. */ 

router.get('/', function(req, res, next) { 
    if (exists){ 
     console.log('DB File Exists!!!!'); 

    } 
    var data = 'Data Starts'; 
    db.serialize(function() { 
     db.each("SELECT id, as_nr, as_name FROM Autonomous_systems", function(err, row) { 
      console.log(+row.id+": "+row.as_nr); 
      //data+= '--'+row.as_name + ": " + row.as_nr; 
     }); 

    }); 
    db.close(); 
    console.log(data); 

    res.render('index', { title: 'Express', datax: data }); 
}); 

module.exports = router; 

Когда я загрузить страницу в браузере Я получаю страницу в первый раз и строки, напечатанные на консоли.

но когда я перезагрузить страницу я получаю следующее сообщение об ошибке

> [email protected] start /home/ehsan/n_ode/Tutorials/sqliteTest 
> node ./bin/www 

DB File Exists!!!! 
Data Starts 
29: 25648/53265 
30: 5555 
31: 5559 
35: 98789 
36: 98789 
GET/304 80.428 ms - - 
GET /stylesheets/style.css 304 3.021 ms - - 

На перезагрузкой

DB File Exists!!!! 
    /home/ehsan/n_ode/Tutorials/sqliteTest/node_modules/sqlite3/lib/trace.js:28 
         throw err; 
         ^

    TypeError: Cannot read property 'id' of undefined 
     at /home/ehsan/n_ode/Tutorials/sqliteTest/routes/index.js:21:23 
     at Database.errBack (/home/ehsan/n_ode/Tutorials/sqliteTest/node_modules/sqlite3/lib/sqlite3.js:16:21) 
     at Database.<anonymous> (/home/ehsan/n_ode/Tutorials/sqliteTest/node_modules/sqlite3/lib/sqlite3.js:20:25) 
     at Database.<anonymous> (/home/ehsan/n_ode/Tutorials/sqliteTest/routes/index.js:20:8) 
     at /home/ehsan/n_ode/Tutorials/sqliteTest/routes/index.js:19:5 
     at Layer.handle [as handle_request] (/home/ehsan/n_ode/Tutorials/sqliteTest/node_modules/express/lib/router/layer.js:95:5) 
     at next (/home/ehsan/n_ode/Tutorials/sqliteTest/node_modules/express/lib/router/route.js:131:13) 
     at Route.dispatch (/home/ehsan/n_ode/Tutorials/sqliteTest/node_modules/express/lib/router/route.js:112:3) 
    --> in Database#each('SELECT id, as_nr, as_name FROM Autonomous_systems', [Function]) 
     at Database.<anonymous> (/home/ehsan/n_ode/Tutorials/sqliteTest/routes/index.js:20:8) 
     at /home/ehsan/n_ode/Tutorials/sqliteTest/routes/index.js:19:5 
     at Layer.handle [as handle_request] (/home/ehsan/n_ode/Tutorials/sqliteTest/node_modules/express/lib/router/layer.js:95:5) 
     at next (/home/ehsan/n_ode/Tutorials/sqliteTest/node_modules/express/lib/router/route.js:131:13) 
     at Route.dispatch (/home/ehsan/n_ode/Tutorials/sqliteTest/node_modules/express/lib/router/route.js:112:3) 
     at Layer.handle [as handle_request] (/home/ehsan/n_ode/Tutorials/sqliteTest/node_modules/express/lib/router/layer.js:95:5) 
     at /home/ehsan/n_ode/Tutorials/sqliteTest/node_modules/express/lib/router/index.js:277:22 
     at Function.process_params (/home/ehsan/n_ode/Tutorials/sqliteTest/node_modules/express/lib/router/index.js:330:12) 
     at next (/home/ehsan/n_ode/Tutorials/sqliteTest/node_modules/express/lib/router/index.js:271:10) 

    npm ERR! Linux 3.16.0-60-generic 
    npm ERR! argv "/home/ehsan/.nvm/versions/node/v4.2.4/bin/node" "/home/ehsan/.nvm/versions/node/v4.2.4/bin/npm" "start" 
    npm ERR! node v4.2.4 
    npm ERR! npm v2.14.12 
    npm ERR! code ELIFECYCLE 
    npm ERR! [email protected] start: `node ./bin/www` 
    npm ERR! Exit status 1 
    npm ERR! 
    npm ERR! Failed at the [email protected] start script 'node ./bin/www'. 
    npm ERR! This is most likely a problem with the sqliteTest package, 
    npm ERR! not with npm itself. 
    npm ERR! Tell the author that this fails on your system: 
    npm ERR!  node ./bin/www 
    npm ERR! You can get their info via: 
    npm ERR!  npm owner ls sqliteTest 
    npm ERR! There is likely additional logging output above. 

    npm ERR! Please include the following file with any support request: 
    npm ERR!  /home/ehsan/n_ode/Tutorials/sqliteTest/npm-debug.log 
+0

Я удалил пространство между colsole.log() и его параметры в строке 24 и сообщение об ошибке изменились. Я обновляю код и Error, я получаю – user3217319

ответ

0

Проблема была, что я объявил

var db = new sqlite3.Database(file); 

глобально в моем маршруте

при вызове db.close(); после использования и запрашивая его один раз когда дб закрыт последующие запросы возвращают неопределенные перемещения var db = new sqlite3.Database(file); внутри методы GET маршрута открывает соединение при каждом доступе

Смежные вопросы