Javascript 如何找到不在团队节点中的用户

Javascript 如何找到不在团队节点中的用户,javascript,sql,node.js,postgresql,Javascript,Sql,Node.js,Postgresql,我试图创建一个功能,当搜索一个用户邀请到一个团队,但只显示用户还没有在该团队 这是我的modalteam.js: "use strict"; module.exports = (sequelize, DataTypes) => { const Team = sequelize.define( "Team", { id: { type: DataTypes.UUID, defaultVal

我试图创建一个功能,当搜索一个用户邀请到一个团队,但只显示用户还没有在该团队

这是我的modal
team.js

"use strict";
module.exports = (sequelize, DataTypes) => {
  const Team = sequelize.define(
    "Team",
    {
      id: {
        type: DataTypes.UUID,
        defaultValue: DataTypes.UUIDV4,
        primaryKey: true,
        allowNull: false,
      },
      title: {
        type: DataTypes.STRING,
        allowNull: false,
      },
      type: DataTypes.STRING,
      mission: DataTypes.STRING,
      agreement: DataTypes.STRING,
      inputs: DataTypes.STRING,
      outputs: DataTypes.STRING,
      picture: DataTypes.STRING,
      duration_in_months: DataTypes.INTEGER,
      badge: DataTypes.INTEGER,
      // restriction: DataTypes.INTEGER,
      status: DataTypes.STRING,
      mergedTo: DataTypes.UUID,
      date_closed: DataTypes.DATE,
      public_team_id: {
        type: DataTypes.STRING,
        allowNull: false,
      },
      current_members_count: {
        type: DataTypes.INTEGER,
        allowNull: false,
      },
      current_invites_count: {
        type: DataTypes.INTEGER,
        allowNull: false,
      },
      max_team_members_allowed: {
        type: DataTypes.INTEGER,
        allowNull: false,
      },
      max_invites_allowed: {
        type: DataTypes.INTEGER,
        allowNull: false,
      },
      rules: {
        type: DataTypes.ARRAY(DataTypes.STRING),
        defaultValue: [],
      },
    },
    {
      tableName: "Teams",
      timestamps: true,
      indexes: [{ unique: false, fields: ["id", "title"] }],
    }
  );

  Team.associate = function (models) {
    Team.belongsTo(models.User, {
      foreignKey: "creatorId",
    });

    Team.hasMany(models.Membership, {
      foreignKey: "teamId",
    });

    Team.hasMany(models.TeamChannel, {
      foreignKey: "teamId",
    });

    Team.hasMany(models.TeamSkills, {
      foreignKey: "TeamId",
    });

    Team.hasMany(models.Rating, {
      foreignKey: "teamId",
    });

    Team.hasMany(models.InvitesApplications, {
      foreignKey: "teamId",
    });
    Team.hasMany(models.Events, {
      foreignKey: "teamId",
    });

    Team.hasMany(models.SubTeam, {
      foreignKey: "teamId",
    });

    Team.belongsTo(models.Room, {
      foreignKey: "roomID",
    });
  };

  return Team;
};
"use strict";

module.exports = (sequelize, DataTypes) => {
  const User = sequelize.define(
    "User",
    {
      id: {
        type: DataTypes.UUID,
        defaultValue: DataTypes.UUIDV4,
        primaryKey: true,
        allowNull: false,
      },
      fullname: {
        type: DataTypes.STRING,
        allowNull: false,
      },
      passwordhash: DataTypes.STRING,
      institution: DataTypes.STRING,
      bio: DataTypes.STRING,
      creator_user_id: DataTypes.UUID,
      public_user_id: DataTypes.STRING,
      picture: DataTypes.STRING(300),
      email: { type: DataTypes.STRING, unique: true },
      service: DataTypes.STRING,
      gender: DataTypes.STRING,
      age: DataTypes.INTEGER ,
      altId: DataTypes.STRING,
      location: DataTypes.STRING,
      mergedTo: DataTypes.UUID,
      document: DataTypes.STRING,
      webpage: DataTypes.STRING, // User's website url
      linkedin: DataTypes.STRING, // Linkedin url
      signupIP: DataTypes.STRING, // IP during sign up
      major: DataTypes.STRING,
      verifiedDT: DataTypes.DATE, // the timestamp of when the user was verified
      couponsUsed: DataTypes.ARRAY(DataTypes.STRING),
      teamCredits: DataTypes.INTEGER , //Passes to allow creation of more than 1 team
      resetToken: DataTypes.STRING, // Password token
      resetTokenExpires: DataTypes.DATE, // Password token expire date
      uniqueToken: DataTypes.STRING, // Email token
      expireToken: DataTypes.DATE, // Email token expire date
      // searchable: DataTypes.BOOLEAN
    },
    {
      tableName: "Users",
      timestamps: true,
      indexes: [
        {
          unique: false,
          fields: ["email", "id", "fullname", "public_user_id"],
        },
      ],
    }
  );

  User.associate = function (models) {

    User.belongsToMany(models.Skill, { through: models.UserSkills });

    User.hasMany(models.Team, {
      foreignKey: "creatorId",
    });

    User.hasMany(models.Membership, {
      foreignKey: "memberId",
    });

    User.hasMany(models.Rating, {
      foreignKey: "raterId",
    });

    User.hasMany(models.Rating, {
      foreignKey: "rateeId",
    });

    User.hasMany(models.InvitesApplications, {
      foreignKey: "senderId",
    });

    User.hasMany(models.InvitesApplications, {
      foreignKey: "receiverId",
    });

    User.hasMany(models.Message, {
      foreignKey: "userID"
    });

    User.hasMany(models.Participant, {
      foreignKey: "senderID"
    });
    
    User.hasMany(models.Participant, {
      foreignKey: "receiverID"
    });

  };

  return User;
};
这是我的modal
user.js

"use strict";
module.exports = (sequelize, DataTypes) => {
  const Team = sequelize.define(
    "Team",
    {
      id: {
        type: DataTypes.UUID,
        defaultValue: DataTypes.UUIDV4,
        primaryKey: true,
        allowNull: false,
      },
      title: {
        type: DataTypes.STRING,
        allowNull: false,
      },
      type: DataTypes.STRING,
      mission: DataTypes.STRING,
      agreement: DataTypes.STRING,
      inputs: DataTypes.STRING,
      outputs: DataTypes.STRING,
      picture: DataTypes.STRING,
      duration_in_months: DataTypes.INTEGER,
      badge: DataTypes.INTEGER,
      // restriction: DataTypes.INTEGER,
      status: DataTypes.STRING,
      mergedTo: DataTypes.UUID,
      date_closed: DataTypes.DATE,
      public_team_id: {
        type: DataTypes.STRING,
        allowNull: false,
      },
      current_members_count: {
        type: DataTypes.INTEGER,
        allowNull: false,
      },
      current_invites_count: {
        type: DataTypes.INTEGER,
        allowNull: false,
      },
      max_team_members_allowed: {
        type: DataTypes.INTEGER,
        allowNull: false,
      },
      max_invites_allowed: {
        type: DataTypes.INTEGER,
        allowNull: false,
      },
      rules: {
        type: DataTypes.ARRAY(DataTypes.STRING),
        defaultValue: [],
      },
    },
    {
      tableName: "Teams",
      timestamps: true,
      indexes: [{ unique: false, fields: ["id", "title"] }],
    }
  );

  Team.associate = function (models) {
    Team.belongsTo(models.User, {
      foreignKey: "creatorId",
    });

    Team.hasMany(models.Membership, {
      foreignKey: "teamId",
    });

    Team.hasMany(models.TeamChannel, {
      foreignKey: "teamId",
    });

    Team.hasMany(models.TeamSkills, {
      foreignKey: "TeamId",
    });

    Team.hasMany(models.Rating, {
      foreignKey: "teamId",
    });

    Team.hasMany(models.InvitesApplications, {
      foreignKey: "teamId",
    });
    Team.hasMany(models.Events, {
      foreignKey: "teamId",
    });

    Team.hasMany(models.SubTeam, {
      foreignKey: "teamId",
    });

    Team.belongsTo(models.Room, {
      foreignKey: "roomID",
    });
  };

  return Team;
};
"use strict";

module.exports = (sequelize, DataTypes) => {
  const User = sequelize.define(
    "User",
    {
      id: {
        type: DataTypes.UUID,
        defaultValue: DataTypes.UUIDV4,
        primaryKey: true,
        allowNull: false,
      },
      fullname: {
        type: DataTypes.STRING,
        allowNull: false,
      },
      passwordhash: DataTypes.STRING,
      institution: DataTypes.STRING,
      bio: DataTypes.STRING,
      creator_user_id: DataTypes.UUID,
      public_user_id: DataTypes.STRING,
      picture: DataTypes.STRING(300),
      email: { type: DataTypes.STRING, unique: true },
      service: DataTypes.STRING,
      gender: DataTypes.STRING,
      age: DataTypes.INTEGER ,
      altId: DataTypes.STRING,
      location: DataTypes.STRING,
      mergedTo: DataTypes.UUID,
      document: DataTypes.STRING,
      webpage: DataTypes.STRING, // User's website url
      linkedin: DataTypes.STRING, // Linkedin url
      signupIP: DataTypes.STRING, // IP during sign up
      major: DataTypes.STRING,
      verifiedDT: DataTypes.DATE, // the timestamp of when the user was verified
      couponsUsed: DataTypes.ARRAY(DataTypes.STRING),
      teamCredits: DataTypes.INTEGER , //Passes to allow creation of more than 1 team
      resetToken: DataTypes.STRING, // Password token
      resetTokenExpires: DataTypes.DATE, // Password token expire date
      uniqueToken: DataTypes.STRING, // Email token
      expireToken: DataTypes.DATE, // Email token expire date
      // searchable: DataTypes.BOOLEAN
    },
    {
      tableName: "Users",
      timestamps: true,
      indexes: [
        {
          unique: false,
          fields: ["email", "id", "fullname", "public_user_id"],
        },
      ],
    }
  );

  User.associate = function (models) {

    User.belongsToMany(models.Skill, { through: models.UserSkills });

    User.hasMany(models.Team, {
      foreignKey: "creatorId",
    });

    User.hasMany(models.Membership, {
      foreignKey: "memberId",
    });

    User.hasMany(models.Rating, {
      foreignKey: "raterId",
    });

    User.hasMany(models.Rating, {
      foreignKey: "rateeId",
    });

    User.hasMany(models.InvitesApplications, {
      foreignKey: "senderId",
    });

    User.hasMany(models.InvitesApplications, {
      foreignKey: "receiverId",
    });

    User.hasMany(models.Message, {
      foreignKey: "userID"
    });

    User.hasMany(models.Participant, {
      foreignKey: "senderID"
    });
    
    User.hasMany(models.Participant, {
      foreignKey: "receiverID"
    });

  };

  return User;
};
searchUserToInvite函数:

   const searchUserToInvite = async (req, res) => {
       ....
    }
我正在使用postgresSQL作为数据库,如何实现此功能? 有人可以帮我或者给我指一些关于这方面的芭蕾舞。
非常感谢。

有人能帮我构建此功能吗?