我正在使用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)
的字符串。