Node.js显示[object Object]而不是result.row

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js显示[object Object]而不是result.row相关的知识,希望对你有一定的参考价值。

我正在使用postgresql版本11并且有一个id = 3的用户和一个帖子字段(文本类型)。当我想从数据库显示帖子时,它显示[object Object]而不是id = 3的帖子

const express = require('express');
const app = express();
const { Pool, Client } = require('pg')
const connectionString = 'postgresql://postgres:1111@localhost:5432/netSecure'


const pool = new Pool({
    connectionString: connectionString,
})

app.get('/h', (req, res) => {
    pool.query('SELECT post from users where id=3', (err, result) => {
        if(err) return console.log('error in query',err);
        console.log(result.rows);
        res.render('posts.pug', {
            post: result.rows
        });
        res.end();
    });
app.listen(3000, () => console.log('http://localhost:3000'))

使用#{post}的pug文件:

  body
    form(action='/posts',method='post')
        label(for='exampleFormControlTextarea1') Enter Your Post
        textarea(autofocus='', placeholder='Post your message here...')#exampleFormControlTextarea1.form-control(rows='3')
        button(type="button").send Send
    form(action='/logout',method='post')
        button.logout Logout
    p #{post}

我哪里弄错了?

答案

[object Object]javascript中对象的默认toString表示。

看来你只想检索一个id = 3的帖子。所以首先你需要提取一个结果,因为postgresql会给你一个结果数组,无论如何。

然后,您需要处理JSON对象,使其不显示为[object Object]。要快速解决方案,您可以使用JSON.stringify()

所以这是代码的片段

app.get('/h', (req, res) => {
    pool.query('SELECT post from users where id=3', (err, result) => {
        if(err) return console.log('error in query',err);
        // need to check if post exists
        let post = (result.rows.length > 0) ? result.rows[0] : null;
        let postInString = JSON.stringify(post);
        console.log(postInString);
        res.render('posts.pug', {
            post: postInString,
        });
        res.end();
    });
另一答案

问题似乎是你正在尝试console.log不是字符串格式的东西;这就是为什么你看到[Object object]

要记录您真正想要的内容,请考虑首先将对象转换为带有JSON.stringify(result.rows)的字符串。

以上是关于Node.js显示[object Object]而不是result.row的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Node.js 的服务器端使用 Object.values()

Node.js socket.io:TypeError Object(){[native code]}没有方法'assign'

来自 MySQL 数据库的查询在 node.js 和 JSON.stringify() 中返回 [Object] [Object] 似乎不起作用

intellij logcat 仅显示 json 对象“[object]”,如何显示整个 json 对象?

(object Object) 从 Node 中的 JSON 请求返回

在angular中用node.js连接redis时遇到的问题——process is not defined at Object../node_modules/redis-errors/ind