如何在带有node.js的ejs文件中使用sqlite3数据库?

问题描述 投票:0回答:1

我已经能够使用node.js连接到我的sqlite3数据库,我想使用单独的ejs文件(index.ejs)中的记录中的信息。有谁知道这是否可能?

代码:

//register sqlite3
const sqlite3 = require('sqlite3').verbose();

let db = new sqlite3.Database('./db/burger.db');

  let sql = 'SELECT id, name from burger WHERE id = ?';
  let id = 5;

    //first row only
    db.get(sql, [id], (err, row) => {
        if (err) {
            console.log("Error in connecting to first row of db");
        }
        return row
        ?  console.log(row.id, row.name)
        
        :console.log('No record found with the id ${id}');
    });

  


//listen for requests
app.listen(3001);

app.use(express.static('views'));

app.get('/', (req, res) => {
    
    res.render('index');

});

//404
app.use((req, res) => {
    res.status(404).render('404', { title: '404'});
    db.close();
});

我完全不确定我必须采取哪些步骤才能实现这一目标。上面是我的 app.js 上找到的内容,这是节点。在一个单独的文件夹“views”中,保存了我的index.ejs 文件。

node.js sqlite ejs node-sqlite3
1个回答
0
投票

是的,这是可能的。请参阅:使用 Express 和 SQlite 进行 CRUD 应用程序的 10 个步骤 2019-10-08 #javascript #node #sql

https://blog.pagesd.info/2019/10/08/crud-with-express-sqlite-10-steps/

我目前正在研究 ejs 来重构 Glitch 上工作的 Node.js、Express、HTML5、CSS3、Sqlite3 程序,以使用像 EJS 这样的模板引擎。 然而,细节决定成败。您需要一个 javascript 文件来配置服务器、指向视图文件夹 (app.set("view engine", "ejs");) 并连接到 sqlite3 数据库。我建议在编写 sqlite3 连接、查询和 EJS 输出视图之前,先获取一个运行 2 或 3 个路由和 EJS 文件视图的基本服务器 JavaScript 文件。这就是我现在的处境。使用 EJS 部分的服务器 GET 路由代码一开始可能有点复杂,因为同时在服务器 JavaScript 文件和 EJS 文件中进行编码。您在视图文件夹中的index.ejs 有了一个良好的开端。您可以在views 文件夹中添加两个子文件夹,名为“pages”和“partials”。views/pages 子文件夹将保存稍作修改的index.ejs 文件,该文件利用partials 文件夹中的可重用html 代码块。页面子文件夹还将保存视图(网页)的其他 EJS 文件,这些文件将使用适当的 EJS 代码输出数据。 sqlite3 数据将被添加到 EJS 视图中,代码如下:<%= ...%>

<h1>List of books</h1> <ul> <% for (const book of model) { %> <li> <%= book.Title %> <em>(<%= book.Author %>)</em> </li> <% } %> </ul>
来源:

https://blog.pagesd.info/2019/10/08/crud-with-express-sqlite-10-steps/

与数据库的连接、数据对象的定义和 SQL 查询显然可以在服务器 JavaScript 文件中进行编码。请务必注意 app.use(express.urlencoded({ Extended: false })); 的使用;

我遇到的一个复杂问题是,我还有一个 client.js 文件,该文件包含在 html 文件的头部中,可能需要将其添加为导出模块。到目前为止,我无法正确发布旧表单输入,但这可能只是我还没有正确设置路由并使用正确的语法对输出视图 EJS 文件进行编码。

另请参阅:

https://coda.io/@peter-sigurdson/lab-workbook-setting-up-a-node-js-express-server-with-sqlite-and

© www.soinside.com 2019 - 2024. All rights reserved.