首页 > 解决方案 > 如何检查sqlite3 nodejs中是否存在表

问题描述

我正在使用 Express 构建应用程序,在一个端点上,我通过此代码在 sqlite3 中生成了一个表

    db.serialize(() => {
        db.prepare(`CREATE TABLE IF NOT EXISTS ${req.body.tablename}(id TEXT)`).run().finalize();
        db.close();
    });

然后我有另一个端点使用此代码检查表是否存在

 db.get(`SELECT name FROM sqlite_master WHERE type='table' AND name=?`, req.param.name, (err, row) => {
        console.log(row) 
 });

但是当我 100% 确定表已创建并存在时,行显示为未定义。

标签: javascriptnode.jssqlite

解决方案


将您的代码更改为此:

var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('guy.sqlite'); //':memory:'

db.serialize(() => {
    db.prepare(`CREATE TABLE IF NOT EXISTS tb1 (id TEXT)`).run().finalize();

    db.get(`SELECT name FROM sqlite_master WHERE type='table' AND name=?`, 'tb1', (err, row) => {
        console.log(row)
    });

    db.close();
});


推荐阅读