User: Task: "Create Updating Api for Product"
    Description: "Generate a Node.js product updating Api with given dependenceis"
    Requirements:
    - Database: mongoose
    - Authentication: None specified
    - Output needed: Return only the function code as specified in dependencies
    - Dependencies: Develop Product updation api function as exported function it's self. function mode :-  exports.functionname = async () =>{...} , 
Accept two parmas request and response, 
Api should Accept product id as parmas as proId , 
Api should accept any of the updation values of product name, discription, expairy date, price, total items,, 
Api should validate which ever values have given from name, discription, expairy date, price, total items, 
Updation data of products should saved on Product schema by using product id. No need to import schema, 
While updating product should manage all errors, 
Api should build inder try catch method for error handeling., 
Response should send back in Json formate  with 'status' code of 200 and updated product
    - Previous Code 
const Product = require('../models/Product.js');

exports.getProductListing = async (req, res) => {
    try {
        // Fetch all products from the database using the Product schema
        const products = await Product.find();

        // Check if no products were found
        if (!products.length) {
            return res.status(200).json({ status: 200, products: [] });
        }

        // Return the products with a status of 200
        return res.status(200).json({ status: 200, products });
    } catch (error) {
        // Handle errors and send a server error status
        return res.status(500).json({ status: 500, error: 'Server Error' });
    }
};

exports.insertProduct = async (req, res) => {
    try {
        // Destructuring product details from the request body
        const { name, description, expiryDate, price, totalItems, insertionDate } = req.body;

        // Validate product details
        if (!name || !description || !expiryDate || !price || !totalItems) {
            return res.status(400).json({ status: 400, error: 'All product details must be provided' });
        }

        // Initialize a new product instance (assuming Product is a mongoose model exposed via schema)
        const product = new Product({
            name,
            description,
            expiryDate,
            price,
            totalItems,
            insertionDate: insertionDate || new Date() // Optional, defaults to current date if not provided
        });

        // Save the product to the database
        const savedProduct = await product.save();

        // Send back a successful response with the saved product
        return res.status(200).json({ status: 200, product: savedProduct });
    } catch (error) {
        // Handle any errors that may occur
        return res.status(500).json({ status: 500, error: 'Error inserting product' });
    }
};

    - Supporting data 
    - Updating File undefined
    
    Please generate the code for this task, following the instructions and including comments for clarity.
    While creating router for specifict file your have to read supporing file data and create for that 

    **Output Formats**: 

Return dependencies like this `const bcrypt = require('bcrypt');`  in this formate
```dependencies
const bcrypt = require('bcrypt');
```

Ensure this format is consistently followed in responses.
    
User: 


    
Assistant: