【问题标题】:Why I'm getting no results from sqlite3 (under nodeJs)?为什么我没有从 sqlite3 (在 nodeJs 下)得到任何结果?
【发布时间】:2016-11-23 20:20:59
【问题描述】:

我刚刚学习了nodeJs & Sqlite3。

我正在尝试使用简单的数据库构建简单的 nodeJs 服务器。 我正在将用户添加到数据库中(我没有收到错误),但是在尝试从表中打印值时,我得到了空结果。

我不明白我做错了什么?

// Import Required Module
var express = require('express')
var sqlite3 = require('sqlite3').verbose();
var promise = require('promise');
var app = express()
var bodyParser = require('body-parser')


// Create instances
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({    
  extended: true
})); 

// Get
app.get('/', function (req, res) {
  res.sendFile('main.html', {root: __dirname })
})

// Init
app.get('/init', function (req, res) {
  initDataBase(req, res)
})


// Post - Login
app.post("/login", function(req, res) {

    var userName = req.body.userName;
    var pass = req.body.pass;
    console.log('userName: ' + userName);
    console.log('pass: ' + pass);

    if(req.body.userName && req.body.pass) 
    {
        if  ((userName == 'a') && (pass == 'b')) 
        {
            console.log('YES')
            res.send('YES')
        }
    }  
    else
    {
        console.log('NO')
        res.send('NO')  
    }

});

/*
    /addUserScreen
*/
app.get("/addUserScreen", function(req, res) {
    console.log('Sending: addUserScreen.html')
    res.sendFile('addUserScreen.html', {root: __dirname })
});

/*
    View
*/
app.get("/view", function(req, res) {

    var db = new sqlite3.Database('usersDataBase');
    db.all("SELECT * FROM usersTable", function(err,rows){

        if (err)
        {
            console.log('Error');
        }
        else
        {
            console.log('Ok');
            rows.forEach(function (row) {
                console.log('---');
                console.log('User: ' + row.userName + ": " + row.password);         
            });

        }
    });
    db.close(); 

    // get to main screen
    console.log('Sending main.html')
    res.sendFile('main.html', {root: __dirname })
});

function onSelectFromUsersTableSuccess(row) {
     console.log(row.userName + ": " + row.password);
}

function onSelectFromUsersTableError(err) {
   console.log('error: ' + err)
}

// Post - Add User
app.post("/addUser", function(req, res) {

    var userName = req.body.userName;
    var passw = req.body.passw;

    if(req.body.userName && req.body.passw) 
    {
         console.log('Adding userName: ' + userName + ' password: ' + passw);   
         var db = new sqlite3.Database('usersDataBase');         
         var stmt = db.prepare("INSERT INTO usersTable VALUES (null, ?, ?)", userName, passw, onAddNewUsernameFinished);         
         stmt.finalize();    
         db.close();
    }  
    console.log('Sending main.html')
    res.sendFile('main.html', {root: __dirname })
});

function onAddNewUsernameFinished(err) {

    if (null == err)
    {   
        console.log('Finished adding new user name')
    }
    else
    {
        console.log('[onAddNewUsernameFinished] error: ' + err)
    }
}

/*

*/
var initDataBase = function (req, res) {
  console.log('Init DB')

  // create DB
  var db = new sqlite3.Database('usersDataBase');

  // create table
  db.run("CREATE TABLE IF NOT EXISTS usersTable (id INTEGER PRIMARY KEY AUTOINCREMENT , userName TEXT, password TEXT)", onCreateDatabaseError);  
  db.close();
  console.log('DB Created Finished')
}

function onCreateDatabaseError(err) {
    if (null != err)
    {
        console.log('[onCreateDatabaseError] error: ' + err)
    }
}


// Listner
app.listen(3000, function () {
  console.log('Example app listening on port 3000!')
})

【问题讨论】:

    标签: node.js sqlite


    【解决方案1】:

    您实际上还没有在数据库中添加用户。

    为了执行一个准备好的查询语句,你需要使用.run方法。

    您的代码应如下所示:

    var stmt = db.prepare("INSERT INTO usersTable VALUES (null, ?, ?)");          
    stmt.run( userName, passw, onAddNewUsernameFinished );
    stmt.finalize();
    

    您可以在statement documentation of sqlite3阅读更多内容

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-17
      • 1970-01-01
      • 1970-01-01
      • 2015-06-26
      • 1970-01-01
      相关资源
      最近更新 更多