Home > other >  can not get userID in sequelize?
can not get userID in sequelize?

Time:06-04

this is user model

const { Model } = require("sequelize");
module.exports = (sequelize, DataTypes) => {
  class User extends Model {
    /**
     * Helper method for defining associations.
     * This method is not a part of Sequelize lifecycle.
     * The `models/index` file will call this method automatically.
     */
    static associate({ Kyc }) {
      // define association here
      this.hasOne(Kyc, { foreignKey: "userID" });
    }
  }
  User.init(
    {
      uuid: {
        type: DataTypes.UUID,
        defaultValue: DataTypes.UUIDV4,
        allowNull: false,
      },
      firstname: {
        type: DataTypes.STRING,
        allowNull: false,
      },
      lastname: {
        type: DataTypes.STRING,
        allowNull: false,
      },
      email: {
        type: DataTypes.STRING,
        allowNull: false,
      },
      role: {
        type: DataTypes.STRING,
        defaultValue: "user",
        allowNull: false,
        validate: {
          roles(value) {
            const rolesArray = ["user", "admin"];
            if (!rolesArray.includes(value)) {
              throw new Error('plese enter valid role "user or admin"');
            }
          },
        },
      },
      password: {
        type: DataTypes.STRING,
        allowNull: false,
      },
    },
    {
      sequelize,
      modelName: "User",
    }
  );
  return User;
};

this is kyc model


const { Model } = require("sequelize");
module.exports = (sequelize, DataTypes) => {
  class Kyc extends Model {
    /**
     * Helper method for defining associations.
     * This method is not a part of Sequelize lifecycle.
     * The `models/index` file will call this method automatically.
     */
    static associate({ User }) {
      // define association here
      this.belongsTo(User, { foreignKey: "userID", as: "user" });
    }
  }
  Kyc.init(
    {
      uuid: {
        type: DataTypes.UUID,
        defaultValue: DataTypes.UUIDV4,
        allowNull: false,
      },
      docimg: {
        type: DataTypes.STRING,
        allowNull: false,
      },
      details: {
        type: DataTypes.STRING,
        allowNull: false,
      },
      status: {
        type: DataTypes.STRING,
        allowNull: false,
      },
      userID: {
        type: DataTypes.INTEGER,
        allowNull: false,
      },
    },
    {
      sequelize,
      modelName: "Kyc",
    }
  );
  return Kyc;
};

kyc middlware

const verifyKyc = async (req, res, next) => {
  // check that user has posted or not if yes then give error
  const user = await User.findByPk(req.user.id);

  const kyc = await Kyc.findOne({
    userID: req.user.id,
  });
  console.log(user.id);
  console.log(kyc);
  if (user.id === kyc) {
  }
  next();
};

Error

Executing (default): SELECT "id", "uuid", "firstname", "lastname", "email", "role", "password", "createdAt", "updatedAt" FROM "Users" AS "User" WHERE "User"."id" = 1; (sequelize) Warning: Model attributes (userID) passed into finder method options of model Kyc, but the options.where object is empty. Did you forget to use options.where? Executing (default): SELECT "id", "uuid", "docimg", "details", "status", "userID", "createdAt", "updatedAt" FROM "Kycs" AS "Kyc" LIMIT 1;

1
Kyc {
  dataValues: {
    id: 117,
    uuid: '99461f78-4781-42cc-a01f-b6541fda849d',
    docimg: 'admin.png',
    details: 'KSAPK0550P',
    status: 'pending',
    userID: 1,
    createdAt: 2022-06-04T10:59:21.039Z,
    updatedAt: 2022-06-04T10:59:21.039Z
  
  _previousDataValues: {
    id: 117,
    uuid: '99461f78-4781-42cc-a01f-b6541fda849d',
    docimg: 'admin.png',
    details: 'KSAPK0550P',
    status: 'pending',
    userID: 1,
    createdAt: 2022-06-04T10:59:21.039Z,
    updatedAt: 2022-06-04T10:59:21.039Z
  
 
  isNewRecord: false
}

i am tring to print userID but giving me this error thank you for your help

CodePudding user response:

You forgot to wrap your condition into where option:

const kyc = await Kyc.findOne({
    where: {
      userID: req.user.id,
    }
  });
  • Related