我有一个用户类和一个数据库类:
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())
创建添加到数据库但直接使用的对象的最佳做法是什么?
答案 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);
})
});