サーバーからクライアントにデータを送信するために、websockets と nodejs 0.10.12 および node-postgre 2.2.0 を使用しています。
サーバーは、クライアントでクリックされたオブジェクトの ID を取得し、その ID (int) に基づいてクエリを実行します。
このオブジェクトのテキスト データと、いくつかの画像の名前を取得したいと考えています。ファイルではなく、名前 (image01.jpg) だけです。
pins
データベースの構造は次のようになります。(オブジェクト) とmulti
(マルチメディアの略) の2 つのテーブルがあります。の ID を表すmulti
という名前の列が にあります。これで、どの multi がどの に属しているかを接続できます。したがって、2,3,4,5,6 は2 に属します。m_pins
pins
pins
multi
pins
m_pins
これらの事実を踏まえて、コードを確認してください
client.connect();var query = client.query('SELECT pins.p_name, type.t_name, era.e_name, controller.c_name, multi.m_name FROM pins,era, type, controller, multi WHERE type.t_id=pins.p_type AND era.e_id=pins.p_era AND controller.c_id=pins.p_controller AND multi.m_pins =pins.p_id AND pins.p_id ='+eoid)//eoid came from client
query.on("row", function (row, result) {result.addRow(row);});
query.on("end", function (result) {
//get all the images, now that query comleted
var mnm=[];
for (var i=0; i<result.rows.length; i++)
{mnm.push(result.rows[i].m_name);}
//get other data...we dont need the "for" now, its the first element of every table, since its about just one object
var name = result.rows[0].p_name;
var ty = result.rows[0].t_name;
var er = result.rows[0].e_name;
var cn = result.rows[0].c_name;
//send to user
connection.send(JSON.stringify({name:name,ty:ty, er:er, cn:cn,mnm:mnm}));
client.end();
});
私には普通に見えます。しかし、うまくいきません。コンソールでCannot read property 'p_name' of undifined
. この行についてvar name = result.rows[0].p_name;
奇妙なことに、テーブルに関するすべてを削除すると、正常multi
に動作します。
多くの代替構文を試しましたが、修正できません。
お待ち頂きまして、ありがとうございます