0

Hi I am trying to insert data in the database using a POST Request but the data is not being inserted. On further investigation I found that to upload form-data, busboy needs to be used for image upload in firebase functions but I am not able to find a solution for using busboy with post method.

Hence if someone can please help me resolve this issue.

Below is the code for reference.

app.js

const express = require('express')
//const router = true;
const router = new express.Router()
const userInfo = require('../models/userProfile')
const multer = require('multer');
var fs = require('fs');
var path = require('path');

var JSONStream = require('JSONStream');
const planCheck = require('../models/planDetails');
const login = require('../models/login_creditionals');
const {Storage} = require('@google-cloud/storage');
const {format} = require('util');
const busboy = require('busboy');



const storage = new Storage({
  projectId: "biz-1",
  keyFilename: "/Users/akm/pixNodes/functions/pixbiz-65a402.json"
});

const bucket = storage.bucket("gs://biz-1");

const upload = multer({
  storage: multer.memoryStorage(),
  limits: {
    fileSize: 10 * 1024 * 1024 
  }
})

const uploadImageToStorage = (file) => {
  return new Promise((resolve, reject) => {
    if (!file) {
      reject('No image file');
    }
    let newFileName = `${Date.now() + path.extname(file.originalname)}`;

    let fileUpload = bucket.file(newFileName);

    const blobStream = fileUpload.createWriteStream({
      metadata: {
        contentType: file.mimetype
      }
    });

    blobStream.on('error', (error) => {
      reject('Something is wrong! Unable to upload at the moment.');
    });

    blobStream.on('finish', () => {
      // The public URL can be used to directly access the file via HTTP.
      const url = format(`https://storage.googleapis.com/${bucket.name}/${fileUpload.name}`);
      resolve(url);
    });

    blobStream.end(file.buffer);
  });
}


 
router.post('/userprofile/check' ,upload.single('profile_pic'), async (req,res) => {
  var reqFiles;
  var reqFilesUrl;
    
    reqFiles = req.file;
    
    if(reqFiles) {
     // const imagerUrl = await uploadImageToStorage(reqFiles)
      
      reqFilesUrl = imagerUrl;
    
      console.log(reqFilesUrl);

        const notify = new userInfo({
        userId: req.body.userId,
        mobile_number : req.body.mobileNumber,
        profile_pic: reqFilesUrl  

    })

    try {
      console.log('success insert data');  
      await notify.save((err,post) => {
        if(err) {
          console.log(err);
         } 
         //console.log('data saved', post);
         res.status(201).send(post);
        });
     // });
     // res.status(201).send();
      
      console.log('201');
    } catch(e) {
        //res.status(401);
        return  res.send(e);
    }
akm
  • 149
  • 1
  • 9

0 Answers0