[英]Express+sqlite3 TypeError: Cannot read property
我正在嘗試將我的路由文件中關注的Express應用中的sqlite3數據庫中的數據獲取到網頁上
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;
當我在瀏覽器中加載頁面時,我會第一次獲得該頁面,並將行打印在控制台上。
但是當我重新加載頁面時,出現以下錯誤
> sqliteTest@0.0.0 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! sqliteTest@0.0.0 start: `node ./bin/www`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the sqliteTest@0.0.0 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
問題是我已經宣布
var db = new sqlite3.Database(file);
在全球范圍內
在調用db.close();
在使用並查詢完數據庫后,一旦它關閉,隨后的查詢將返回未定義的移動var db = new sqlite3.Database(file);
路由的get方法內部會在每次訪問時打開一個連接
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.