gpt4 book ai didi

node.js 并表达将 sqlite 数据传递给我的一个 View

转载 作者:搜寻专家 更新时间:2023-10-31 23:28:57 29 4
gpt4 key购买 nike

在我的 app.js 中,我有以下尝试从 sqlite 数据库检索数据并将其传递到我的 View 之一:

app.get("/dynamic", function(req, res) {
var db = new sqlite3.Database(mainDatabase)
var posts = []

db.serialize(function() {
db.each("SELECT * FROM blog_posts", function(err, row) {
posts.push({title: row.post_title, date: row.post_date, text: row.post_text})
})
})

res.render("dynamic", {title: "Dynamic", posts: posts})
})

谁能告诉我我做错了什么。无论如何,posts 数组似乎都是空的。

编辑我在关注 tutorial这解释了虽然插件有异步,但这个方法不是异步的

这是教程中的引述

Despite the callbacks and asynchronous nature of Node.js, these transactions will run in series, allowing us to create, insert, and query knowing that the statement prior will run before the current one does. However, sqlite3 provides a "parallel" wrapper with the same interface, but runs all the transactions in parallel. It just all depends on your current circumstances.

最佳答案

db 调用可能是异步的。这意味着您在他们返回数据之前进行渲染。

您需要弄清楚如何从您的查询中获取一个回调,并在该回调中呈现您的模板。

您似乎想要将第二个 complete 回调传递给 db.each() (谢谢 Jonathan Lonowski 的小费!)

var posts = [];
db.serialize(function() {
db.each("SELECT * FROM blog_posts", function(err, row) {
posts.push({title: row.post_title, date: row.post_date, text: row.post_text})
}, function() {
// All done fetching records, render response
res.render("dynamic", {title: "Dynamic", posts: posts})
})
})

这个想法是在任何异步代码的最后一个回调中渲染,这样你就拥有了你需要的一切。


关于node.js 并表达将 sqlite 数据传递给我的一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17954743/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com