sqlite3回调(node.js)

时间:2015-09-13 15:51:32

标签: javascript node.js sqlite

我试图将我网站上输入的电子邮件与数据库中的电子邮件进行比较,以查看它是否已存在。如果是,则该函数返回false并显示错误。

var db = new sqlite3.Database('users_db.db');

db.get(
    "SELECT * FROM users WHERE useremail = ?", 
    [email], 
    function (err, rows) {
        if (rows == undefined ){
            global.returnvalue2 = false;
        }
    }
);

我想要的是在选择之后立即运行该函数,以便返回的值为false,并且不创建用户记录。

目前我意识到回调是在所有事情之后被调用的,所以它只是进行选择并在程序的其余部分继续进行直到结束。

如何查看是否有同一封电子邮件的现有记录?

1 个答案:

答案 0 :(得分:0)

这是我制作的一个。

const sqlite3 = require('sqlite3').verbose();
let db = new sqlite3.Database('iHacks.db');

function get_user_credentials (email, password)
{ return new Promise((rs, rj) => {
  function callback (err, User)
  {
    if (err) rj(err);
    rs(User);
  }

  db.get('select * from users where email=? and password=?', [email, password], callback);
}); }

function login (email, password)
{ return new Promise ((rs, rj) => {
  // Hashing the password.
  password = sha256(password + 'EzSalt');

  // Creating an Error
  const err = new Error('Email or password did not match!');

  // Callback functions
  function check (User)
  {
    rs(User);
  }      

  function fail (err)
  {
    rj(err);
  }

  // Getting the user credentials
  get_user_details(email, password).then(check).catch(fail);    

}); }

login()
  .then(/* Continue code */)
  .catch(err => {throw new Error(err); })
  ;