MySQL存储的函数返回对象,而不是整数

我需要一个函数mySQl返回我一个聊天室表的Id。 这是我的函数“get_room_id”:

BEGIN DECLARE room_id INT(11); DECLARE user_id INT(11); SET room_id = 0; SET user_id = get_user_id(in_user_uid); SELECT `id` INTO room_id FROM `room` WHERE `user_id` = user_id AND `type` = in_seller_type AND `site` = in_site_domain AND `sellerid` = in_seller_id LIMIT 1; IF (room_id > 0) THEN RETURN room_id; ELSE INSERT INTO `room` (`user_id`, `sellerid`, `site`, `type`) VALUES (user_id, in_seller_id, in_site_domain, in_seller_type); SET room_id = LAST_INSERT_ID(); INSERT INTO `participant` (`user_id`, `room_id`, `joined`) VALUES (user_id, room_id, NOW()); RETURN room_id; END IF; END 

那是在我的NodeJS代码中返回这个对象:

 [ RowDataPacket { 'get_room_id(\'13442692f82fdb4cf91919b1e3378fe4b79ec1bc\', \'mydomain.com\', \'pro\', \'5\')': 1 } ] 

而不是一个值为1的INT(11)(我们可以在对象的末尾看到它)。

有人有解决scheme吗? 我的语法错了吗?

如果你像这样调用你的函数(在SQL中):

 select get_room_id(...) as room_id 

你的代码可能会返回一个很好的对象{ 'room_id' : 1 } ,这应该很容易在你的代码中进行操作。

从Node的angular度来看,SELECT返回的不止是一个数据值。 它还会返回所选列的名称,并将所有内容打包到一个对象中。 使用尴尬列的别名将帮助您获得一个易于使用对象的工作。

Interesting Posts