簡體   English   中英

Express + sqlite3 TypeError:無法讀取屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM