获取链接项以及原始mysql查询

时间:2019-05-14 23:24:03

标签: mysql node.js

我有一个群组聊天应用程序,其中的群组,用户和群组用户关系被分为三个表。我可以分别获取组和组用户,但是我想将它们聚集在一起。

我的mysql表是:

CREATE TABLE IF NOT EXISTS users (
  user_googleid VARCHAR(255) UNIQUE NOT NULL PRIMARY KEY,
  email VARCHAR(255) UNIQUE NOT NULL,
  name VARCHAR(255),
  firstName VARCHAR(127),
  lastName VARCHAR(127),
  picture TEXT,
  active BOOLEAN,
  created DATETIME not null default now(),
  last_active DATETIME
);

CREATE TABLE IF NOT EXISTS groups (
  group_id bigint unsigned auto_increment UNIQUE NOT NULL PRIMARY KEY,
  groupname varchar(500) NOT NULL,
  created DATETIME not null default now()
);

CREATE TABLE IF NOT EXISTS group_users (
  item_id bigint unsigned auto_increment UNIQUE NOT NULL PRIMARY KEY,
  group_id bigint unsigned,
  user_googleid VARCHAR(255),
  CONSTRAINT group_users_fk1 FOREIGN KEY (group_id) REFERENCES groups (group_id),
  CONSTRAINT group_users_fk2 FOREIGN KEY (user_googleid) REFERENCES users (user_googleid)
);

获取用户组的代码为:

con.query("SELECT * FROM group_users WHERE user_googleid = " + con.escape(userid) + ";", function (err, result) {
        if (err) throw err;
        var groupIds = [];
        for (let index = 0; index < result.length; index++) {
          groupIds.push(result[index].group_id);
        }
        if (groupIds.length > 0) {
          con.query("SELECT * FROM groups WHERE group_id IN (" + groupIds.join(", ") + ");", function (err, r) {
            if (err) throw err;
            socket.emit('groups', r);
          });
        } else {
          socket.emit('groups', []);
        }
      });

获取组用户的代码为:

con.query("SELECT * FROM users u INNER JOIN group_users gu USING (user_googleid) WHERE gu.group_id = " + con.escape(groupID) + ";", function (err, result) {
        if (err) throw err;
        socket.emit('groupUsers', result);
      });

我希望能够同时返回论坛及其用户。我该怎么办?

0 个答案:

没有答案