user20659824
user20659824

Reputation:

How to make a search function who can search user from my database mongodb

How to make a search function who can search user from my database mongodb I want to make a search functional component from which I can use to search user to msg like facebook instagram have I mean anyone can search any user with a 4 digit uid or userid so how can I make built? i anyone can suggest post videos? my user is written in nodejs and its a mobile app react native i have also made create user in my server but the id they its give is 20-30 digit but i want 4 digit uid so that my users can search any other user from that uid

user.modules.js:

const models = require('../models');

class user_module {

    static save_user_details = async (req) => {
        try {
            console.log("req body", req.body)
            const { profileImage } = req.body
            let set_data = req.body
            if (!!profileImage) {
                set_data.profileImage = profileImage
            }
            return await models.users.create(set_data)

        } catch (error) {
            throw error
        }
    }

    static retrieve_user = async (req) => {
        try {
            let {limit, pagination} = req.query

            let query = {}
            let projection ={__v: 0}
            let options = {
                lean: true,
                sort: {_id: -1},
                skip: !Number(pagination) ? 0: Number(pagination) * !Number(limit) ? 10: Number(limit),
                limit: !Number(limit) ? 10: Number(limit)
            }
            let users = await models.users.find(query, projection, options)
            let count = await models.users.count(query)
            return {users, count}
        } catch (error) {
            throw error
        }
    }

    static verify_user = async (req) => {
        try {
            console.log("req body", req.body)
            const { otp, user_id } = req.body
            if(otp == '123456'){
                let user = await models.users.findById(user_id)
                return {user: user, status: true, message: 'success'}
            }else{
                return {user: null, status: false, message: 'Otp Invalid'}
            }

        } catch (error) {
            throw error
        }
    }

}

module.exports = user_module

user.controller.js:

const user_module = require('./user.modules');

class user_controller extends user_module {

    static create_user = async (req, res) =>{
        try {
            console.log("controller response",req.body)
            let response = await this.save_user_details(req)
            let message = 'Success';
            res.send({
                success: true,
                message: message,
                data: response
            })
        } catch (error) {
            let status_code = error.status.code != undefined ? error.status_code: 500;
            let type = error.type != undefined ? err.type: 'Bad Request';
            let message = err.custom_msg != undefined ? error.custom_msg: "Something went wrong"
            res.status(status_code).send({
                success: false,
                error:type,
                message: message
            })
        }
    }

    static get_users = async (req, res) =>{
        try {
            console.log("controller response",req.body)
            let response = await this.retrieve_user(req)
            let message = 'Success';
            res.send({
                success: true,
                message: message,
                data: response
            })
        } catch (error) {
            let status_code = error.status.code != undefined ? error.status_code: 500;
            let type = error.type != undefined ? err.type: 'Bad Request';
            let message = err.custom_msg != undefined ? error.custom_msg: "Something went wrong"
            res.status(status_code).send({
                success: false,
                error:type,
                message: message
            })
        }
    }

    static otp_verify = async (req, res) =>{
        try {
            console.log("controller response",req.body)
            let response = await this.verify_user(req)
            if(response.status){
                res.send({
                    success: true,
                    message: response.message,
                    data: response.user
                })
            }else{
                res.status(400).send({
                    success: false,
                    error: false,
                    message: response.message
                })
            }
          
        } catch (error) {
            let status_code = error.status_code != undefined ? error.status_code: 500;
            let type = error.type != undefined ? err.type: 'Bad Request';
            let message = error.custom_msg != undefined ? error.custom_msg: "Something went wrong"
            res.status(status_code).send({
                success: false,
                error:type,
                message:message
            })
            res.end();
        }

    }

    
}

module.exports = user_controller

Upvotes: 0

Views: 39

Answers (1)

Amit Kumar
Amit Kumar

Reputation: 660

you can send the same user_id as you are sending in verify_user and add the below function in your user_module then use this function in your controller.

static get_user_by_id = async (req) => {
  try {
      const { user_id } = req.query
      return await models.users.findById(user_id)
  } catch (error) {
      throw error
  }
}

Note that verify_user is expecting a POST request while the above function expect a GET request.

Upvotes: 1

Related Questions