0

我正在使用 websockets 和 nodejs 0.10.12 和 node-postgre 2.2.0 将数据从服务器发送到客户端。

服务器获取在客户端上单击的对象的 id,并根据该 id(是一个 int)执行查询。

我想获取该对象的一些文本数据,以及一些图像的名称。只是名称(image01.jpg),而不是文件。

数据库的结构是这样的:有两个表,pins(对象)和multi(代表多媒体)。中有一个列multi,namedm_pins表示 a 的 id pins。所以我可以连接什么 multi 属于哪个pins. 所以multi2,3,4,5,6 属于pins2,如果它们有 2 in 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桌子的所有东西,效果很好。

我尝试了许多替代语法,但无法修复它。

谢谢你的耐心

4

0 回答 0