質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

解決済

1回答

1512閲覧

node.jsとpostgreSQLを使ってデータを編集する機能を付けたい

higano_0506

総合スコア3

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

0クリップ

投稿2021/04/05 06:10

前提・実現したいこと

node.jsとを使って掲示板を作っています。
投稿されたデータを編集する機能を付けてる途中です。
投稿完了ボタンを押したらひとつ前の投稿画面に戻る機能を実装してる途中でエラーが出ました。

発生している問題・エラーメッセージ

C:\Users\user\OneDrive\デスクトップ\Chatアプリ\node-test\routes\messages.js:14 title: channel.rows[0].title,              ↑ TypeError: Cannot read property 'rows' of undefined

該当のソースコード

<<<messages.js>>> var express = require('express'); var router = express.Router(); var dayjs = require('dayjs'); var pool = require('../dbConnection'); router.get('/:channel_id', function (req, res, next) { var channelId = req.params.channel_id; var getBoardQuery = "SELECT * FROM channel WHERE channel_id = " + channelId; var getMessageQuery = "SELECT *, to_char(created_at, \'YYYY年MM月DD日 HH24時MI分SS秒\') AS created_at FROM message WHERE channel_id = " + channelId; pool.connect(function (err, client) { client.query(getBoardQuery, function (err, channel) { client.query(getMessageQuery, function (err, messages) { res.render('messages', { title: channel.rows[0].title, channel: channel.rows[0], messageList: messages.rows }); }); }); }); }); router.post('/:channel_id', function (req, res, next) { var messages = req.body.message; var channelId = req.params.channel_id; var createdAt = dayjs().format('YYYY-MM-DD HH:mm:ss'); var query = "INSERT INTO message (message, channel_id, created_at) VALUES ('" + messages + "'," + "'" + channelId + "'," + "'" + createdAt + "')"; pool.connect(function (err, client) { console.log(err) client.query(query, function (err, rows) { console.log(err) res.redirect('/messages/' + channelId); }); }); }); module.exports = router; <<<update.js>>> var express = require('express'); var router = express.Router(); var dayjs = require('dayjs'); var pool = require('../dbConnection'); router.get('/:messages_id', function (req, res, next) { var messageId = req.params.messages_id; var getQuery = "SELECT *, to_char(created_at, \'YYYY年MM月DD日 HH24時MI分SS秒\') AS created_at FROM message WHERE messages_id = " + messageId; pool.connect(function (err, client) { client.query(getQuery, function (err, message) { console.log(message.rows); res.render('update', { title: message.rows[0].title, messageList: message.rows }); }); }); }); router.post('/:messages_id', function (req, res, next) { var channelId = req.body.channel_id; var update = req.body.update; var messageId = req.params.messages_id; var createdAt = dayjs().format('YYYY-MM-DD HH:mm:ss'); var query = "UPDATE message SET message = " + update + ", created_at = " + createdAt + "WHERE messages_id = " + messageId; pool.connect(function (err, client) { console.log(err); client.query(query, function (err, rows) { console.log(err); res.redirect('/messages/' + channelId); }); }); }); module.exports = router;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

higano_0506

2021/04/06 12:32

ありがとうございます。修正してからまた質問投稿しようと思います。
guest

回答1

0

自己解決

修正してからまた質問上げさせていただきます。

投稿2021/04/06 12:38

higano_0506

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問