我已经搜索了如何在Node.js中创建带回调的sqlite3数据库,但找不到任何链接。有人可以指向我介绍文档还是提供2-3行代码示例以实现以下目标:
这是我尝试过的:
let dbCreate = new sqlite3.Database("./user1.db", sqlite3.OPEN_CREATE, function(err){
if(!err){
logger.infoLog("Successfully created DB file: " + dbFileForUser + " for user: " + username );
} else {
logger.infoLog("Failed to create DB file: " + dbFileForUser + ". Error: " + err );
}
});
dbHandler[username] = dbCreate;
执行此操作时,出现以下错误: “无法创建数据库文件:./database/user1.db。错误:错误:SQLITE_MISUSE:错误的参数或其他API滥用”
这个没有回调的调用就可以了。
var customDB = new sqlite3.Database(“ ./ custom.db”,sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE);
但是,在这种情况下,我将不知道在创建数据库时是否遇到任何错误。
答案 0 :(得分:7)
尝试一下:
let userDB = new sqlite3.Database("./user1.db",
sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE,
(err) => {
// do your thing
});
答案 1 :(得分:1)
@Irvin
是正确的,我们可以看一下http://www.sqlitetutorial.net/sqlite-nodejs/connect/和
检查是否跳过了第二个参数,它的默认值为sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE
在这种情况下,如果数据库不存在,则将通过连接创建新数据库。
sqlite3.OPEN_READWRITE:用于打开数据库连接并执行读写操作。
sqlite3.OPEN_CREATE:创建数据库(如果不存在)并打开连接。
因此,这是您无需跳过第二个参数即可解决问题的第一种方法。
const sqlite3 = require("sqlite3").verbose();
let db = new sqlite3.Database('./user1.db', (err) => {
if (err) {
console.error(err.message);
} else {
console.log('Connected to the chinook database.|');
}
});
db.close((err) => {
if (err) {
return console.error(err.message);
}
console.log('Close the database connection.');
});
这是连接数据库的第二种方式(已经由@Irvin
回答了)。
const sqlite3 = require("sqlite3").verbose();
let db = new sqlite3.Database('./user1.db', sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE
, (err) => {
if (err) {
console.error(err.message);
} else {
console.log('Connected to the chinook database.');
}
});
db.close((err) => {
if (err) {
return console.error(err.message);
}
console.log('Close the database connection.');
});