[解決済み] プロパティ 'query' が未定義で読み取れません。
2022-02-27 16:45:11
質問
私はsocket.ioチャットルームを作成し、私はいくつかのデータベースクエリを使用してデータを挿入および選択しますが、残念ながら私はいくつかのクエリのエラーが表示されます。
エラーが発生したファイルのコードは以下の通りです。
var rooms = [];
module.exports.getUserFeeds = function (chatpage, socket, io, pool,async)
{
socket.on('senddata', function (data)
{
socket.user_id = data.user_id;
socket.room_id=data.room_id;
socket.room = 'room' + data.room_id;
rooms['room' + data.room_id] = 'room' + data.room_id;
socket.join('room' + data.room_id);
pool.getConnection(function (err, connection)
{
async.parallel([
function(callback)
{
connection.query('SELECT user_id,username FROM chat_users where user_id=' + data.user_id + '', function (error1, userdata)
{
if (error1) return callback(error1);
callback(null, userdata);
});
},
function (callback)
{
if(data.user_id)
connection.query('SELECT user_id,username FROM chat_users', function (error3, memdata)
{
if (error3) return callback(error3);
callback(null, memdata);
});
else
callback(null,null);
},
function(callback)
{
if(data.user_id)
connection.query('SELECT comment_id,comment,chat_users.user_id,username,comments.added FROM comments INNER JOIN chat_users ON comments.user_id=chat_users.user_id',function(error4,converdata){
if (error4) return callback(error4);
callback(null, converdata);
});
else
callback(null,null);
}
], function (err, results)
{
if(err) throw err;
socket.emit('chatdata',
{
memdata:results[1],
converdata:results[2],
});
socket.broadcast.to('room'+ data.room_id +'').emit('newuser', {userdata:results[0]});
connection.release();
});
});
});
socket.on('sendcomment', function (data)
{
pool.getConnection(function (err, connection)
{
connection.query('INSERT INTO comments (user_id,comment,added) VALUES (' + data.user_id + ',"' + data.msg + '","' + data.datetime + '")', function (err, result)
{
if (err) throw err;
async.parallel([
function (callback)
{
connection.query('SELECT comments.*,username,comments.added from comments JOIN chat_users ON comments.user_id=chat_users.user_id WHERE comments.comment_id=' + result.insertId + '', function (err2, comments)
{
if (err2) return callback(err2);
callback(null, comments);
});
},
function (callback)
{
connection.query('SELECT count(comment_id) as tot_comment from comments', function (err3, comment_count)
{
if (err3) return callback(err3);
callback(null, comment_count);
});
},
], function (err, results)
{
if (err) throw err;
if (results[0])
{
chatpage. in('room'+ data.room_id +'').emit('showcomment',
{
room_comment: results[0],
comment_count: results[1]
});
}
connection.release();
});
});
});
});
socket.on('disconnect', function ()
{
console.log("user disconnected");
pool.getConnection(function (err, connection)
{
connection.query('DELETE from chat_users where user_id='+socket.user_id+'', function (err, removeuser)
{
if (err) throw err;
});
connection.query('DELETE from comments where user_id='+socket.user_id+'', function (err, removecomments)
{
if (err) throw err;
});
connection.release();
});
socket.broadcast.to('room'+ socket.room_id +'').emit('removeuser', {user_id:socket.user_id});
socket.leave(socket.room);
});
};
そして、このコードのために私が得ているエラーは、次のとおりです。
この問題に関して、どなたか助けてください。
ありがとうございました。 取引先
解決方法は?
mysqlの接続にエラーがあるようです。まず、適切な接続を試みてください。
ステップ1:プールの作成(一度だけ行う)
var mysql = require('mysql');
var pool = mysql.createPool({
host : 'hostname',
user : 'username',
password : 'password',
database : 'db_name',
connectionLimit : 10, // this is the max number of connections before your pool starts waiting for a release
multipleStatements : true // I like this because it helps prevent nested sql statements, it can be buggy though, so be careful
});
ステップ2:接続を取得する
pool.getConnection(function (err, conn) {
if (err)
return res.send(400);
// if you got a connection...
conn.query('SELECT * FROM table WHERE id=? AND name=?', [id, name], function(err, rows) {
if(err) {
conn.release();
return res.send(400, 'Couldnt get a connection');
}
// for simplicity, just send the rows
res.send(rows);
// CLOSE THE CONNECTION
conn.release();
}
});
詳しくはこちらをご覧ください。 https://youtu.be/2CeAnrCsBQo
http://fearby.com/article/how-to-setup-pooled-mysql-connections-in-node-js-that-dont-disconnect/
関連
-
[解決済み】Discord.js が特定のチャンネルにメッセージを送信する場合
-
[解決済み】Express.js req.bodyが未定義です。
-
[解決済み】nodemon - app crashed - waiting for file changes before start
-
[解決済み] TypeScript getting error TS2304: cannot find name ' require'.
-
[解決済み] Node.jsで環境変数を読み込む
-
[解決済み] Node.js上のExpress.jsでGET(クエリ文字列)変数を取得する方法とは?
-
[解決済み] Node.JSを使用して、JSONファイルを(サーバー)メモリに読み込むにはどうすればよいですか?
-
[解決済み] Node.jsで "Cannot find module "エラーを解決するにはどうしたらいいですか?
-
[解決済み] node.jsでファイルを1行ずつ読み込む?
-
[解決済み] Ubuntuでnodeパッケージマネージャを使用してパッケージをインストールすることができない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】mongoError: トポロジーが破壊されました
-
[解決済み] エラー: nodejs の get 呼び出しで getaddrinfo ENOTFOUND が発生しました。
-
[解決済み】AWS Lambdaでnodejsの「ref」モジュールを使用すると「invalid ELF header」と表示される件
-
[解決済み】 console.logの出力をどこに永久保存するか?
-
[解決済み】ブロックスコープの宣言は、ストリクトモード以外ではまだサポートされていません。
-
[解決済み】Mongooseで、日付でソートするにはどうしたらいいですか?(node.js)
-
[解決済み] Json Web Token verify() return jwt malformed
-
[解決済み] ノードマータ予期せぬフィールド
-
[解決済み] Macでポート3000をロックしているプロセスを見つける(そして殺す)【終了
-
[解決済み] ノードのバージョンを管理するためのnまたはnvm - 各バージョンのグローバルモジュールを保持することは良いアイデアですか?