我正在使用websockets和nodejs 0.10.12以及node-postgre 2.2.0将数据从服务器发送到客户端。
服务器获取在客户端上单击的对象的id,并根据该id执行查询(是一个int)。
我想获得这个对象的一些文本数据,以及一些图像的名称。只是名字(image01.jpg),而不是文件。
数据库的结构如下:有两个表,pins
(对象)和multi
(代表多媒体)。 multi
中有一列名为m_pins
,代表pins
的ID。所以我可以连接多个属于哪个pins
。因此multi
2,3,4,5,6属于pins
2,如果它们在m_pins
中有2个。
根据这些事实,请检查代码
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
表的每一个,那么工作正常。
我尝试了很多替代语法,但无法修复它。
感谢您的耐心