node.js - 从数据库获取数据的问题, "render"函数错误

标签 node.js postgresql express

我对表达很陌生,我在 Postgres 中创建了一个数据库来提取有关博客文章的数据,以将信息放入 ejs 文件中。 我收到错误:

 Cannot read property 'send' of undefined

我尝试用resreq 调用db.getPosts(),但是无法再次设置标题,返回错误。

我的 query.js 文件中有问题的代码块:

const getPosts = (_req, res) => {
    pool.query('SELECT * FROM blog_posts', (error, results) => {
        console.log(error);
        // console.log(results.rows);
        if (error) {
            throw error
        }
        return res.send(results.rows );
    })
}

send(results.rows)render('blog', {posts: results.rows}) 调用 res 给出完全相同的错误。

server.js 中应该使用该数据的函数如下:

app.get("/blog", function (req, res) {
    const posts = db.getPosts();
    res.render("blog", { posts: posts });
});

我做错了什么?我缺乏一些知识,这是肯定的,所以如果你能帮忙,请尽可能简单地向我解释一下。

此外,send() 函数是否是获取要在 server.js 中操作的数据的正确函数?许多教程建议使用 json() 但后来我并没有真正获得正确的数据格式,它只是显示在浏览器中。

非常感谢。

最佳答案

getPosts接收回调:

const getPosts = (callback) => {
    pool.query('SELECT * FROM blog_posts', (error, results) => {
        console.log(error);
        // console.log(results.rows);
        if (error) {
            throw error
        }
        callback(results.rows);
    })
}

用法类似于:

app.get("/blog", function (req, res) {
    db.getPosts(function(rows) {
        res.render("blog", {posts: rows})
    });
});

关于node.js - 从数据库获取数据的问题, "render"函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56236187/

相关文章:

javascript - Angular + Node(Express) + SSL 集成

javascript - Puppeteer:如何拦截跨多个 "pages"的请求?

node.js - Nodejs SQLite3 中的通配符

postgresql - 从 PostgreSQL 过程/函数调用 RESTful Web 服务

sql - 使用和/或在 from/join 子句中选择查询

node.js - Express 路由器 + WebSocketServer - 在 POST 上发送消息

javascript - 使div溢出-y从底部开始滚动

node.js - MongoDB:按created_at和发件人分组

postgresql - Docker-compose:将 Celery 绑定(bind)到 Postgres 数据库

node.js - Nodejs Mongoose - 一次数据库调用 = 两个按不同标准排序的独立数组