我希望看到为表设置的默认值,但得到的却是undefined
这是代码:
import Database from 'better-sqlite3-multiple-ciphers'
// https://gist.github.com/anhdiepmmk/b8dcd1c7be8c09580f607ef186529192
// https://www.sqlite.org/quirks.html#no_separate_boolean_datatype
// https://www.sqlite.org/stricttables.html#strict_tables
const commandToCreateJitsiSettingsTable = `
CREATE TABLE IF NOT EXISTS jitsiTable (
id INTEGER PRIMARY KEY AUTOINCREMENT,
alwaysOnTopWindowEnable INTEGER NOT NULL DEFAULT 1,
disableAGC INTEGER NOT NULL DEFAULT 0,
serverURL TEXT,
serverTimeout REAL DEFAULT undefined,
created_at timestamp NOT NULL DEFAULT current_timestamp,
updated_at timestamp NOT NULL DEFAULT current_timestamp
)
`
if (!fs.existsSync(path.join(settingsUserDataFolder, "Settings.db")) {
const SettingsDB = new Database(path.join(settingsUserDataFolder,"Settings.db"), {})
SettingsDB.pragma('journal_mode = WAL')
SettingsDB.pragma("rekey='secret-key'");
SettingsDB.exec(commandToCreateJitsiSettingsTable)
SettingsDB.close();
} else {
console.log("Settings.db already exists")
const SettingsDB = require('better-sqlite3-multiple-ciphers')(path.join(settingsUserDataFolder,"Settings.db"), {})
SettingsDB.pragma("key='secret-key'");
const row = SettingsDB.prepare("SELECT * FROM jitsiTable");
console.log(row.alwaysOnTopWindowEnable, row.disableAGC, row.serverURL, row.serverTimeout, row.created_at, row.updated_at)
SettingsDB.close();
}
输出量:
Settings.db already exists
undefined undefined undefined undefined undefined undefined
如何正确地设置然后获取表中的默认值?
2条答案
按热度按时间mrfwxfqh1#
您已准备好陈述式,但尚未撷取任何数据。您将
row
变数设定为准备好的陈述式,而非数据。您需要使用这些方法之一,例如.get()或.all(),视您对准备好的陈述式撷取数据的需求而定。在您的情况下,可能是.get()。如需详细信息,请参阅API文件。例如,您可以将这些行
与
evrscar22#
多亏了@ PCemGuy和一个善良的
better-sqlite3
repo的家伙,我意识到插入操作丢失了:输出量:
iterate()
用于获取all
到目前为止的插入:Output
: