У меня есть функция, которая получает запись из базы данных, используя better-sqlite3
. Функция находится в файле в том же каталоге, что и база данных.
import * as vscode from 'vscode';
/**
* Get the entry from the SQLite3 DB.
*/
function getEntry(entryId: number) {
const Database = require('better-sqlite3');
const dbPath = vscode.Uri.parse('file://data.db', true); // <--
const db = new Database(dbPath, { verbose: console.log });
const stmt = db.prepare("SELECT * FROM data_tbl WHERE entryId = ?;");
const dec = stmt.get(entryId);
// ...
}
Я достаточно знаком с JS / TS, чтобы нормально работать, но я не могу понять, как я долженпередать первый аргумент конструктору new Database()
. Попытка dbPath.path
должна вернуть string
, но это неверно: "/"
- это значение. Атрибут authority
становится "data.db"
.
. Просто использование абсолютного пути к файлу базы данных в качестве первого аргумента конструктора (new Database("/Users/jamesh625/extension/src/data.db", { verbose: console.log });
) работает.
В качестве альтернативы,
const dbPath = vscode.Uri.parse('file:///Users/jamesh625/extension/src/data.db', true); // <--
const db = new Database(dbPath.path, { verbose: console.log });
также работает.
Как правильно сделать это, чтобы расширение можно было установить для других пользователей? Как обрабатывать файловые ресурсы для расширений кода VS?