插入DB [nodejs]后创建和使用对象

时间:2018-02-15 16:54:15

标签: node.js sqlite

我有一个用户类和一个数据库类:

user.js的

const Database = require('./database')
const myDB = new Database()

function User (userID) {
  this.userID = userID
  myDB.insertUser(userID)
}

Database.js

function Database () {
  const db = new sqlite3.Database(dbName)
  db.serialize(() => {
    db.run(`CREATE TABLE IF NOT EXISTS ${userTable} (user_id TEXT, balance INT)`)
  })
  db.close()
}

Database.prototype.insertUser = function (userID, cb) {
// code
}

Database.prototype.getName = function (userID, cb) {
// code
}

我想执行以下操作,但不确定如何同步执行此操作:

const john = new User('john')
console.log(john.getName())

创建添加到数据库但直接使用的对象的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

从DB中插入和读取是异步操作,您必须使用回调或承诺。我可以看到你已经定义了回调但没有正确使用它。

我假设你的insertUser和getName函数如下所示。

Database.prototype.insertUser = function (userID, cb) {
  // code reading data
  cb(null,data)
}

Database.prototype.getName = function (userID, cb) {
  // code
  cb(null,data)
}


function User (userID,cb) {
  this.userID = userID
  myDB.insertUser(userID,cb)
} 

new User('john', (err, data) => {
    this.getName('john', (err, result) => {
        console.log(result);
    })
});