0

サーバーからクライアントにデータを送信するために、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_pinspinspinsmultipinsm_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に動作します。

多くの代替構文を試しましたが、修正できません。

お待ち頂きまして、ありがとうございます

4

0 に答える 0