我已经能够使用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 文件。
是的,这是可能的。请参阅:使用 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