Ok so here is the create item function.
createItem = async () => {
  if (createItemFile.files.length == 0){
    alert("Are you gonna select a file?");
    return;
  } else if (createItemNameField.value.length == 0){
    alert("You need to give he file a name!");
    return;
  }
  const nftFile = new Moralis.File("nftFile.jpg",createItemFile.files[0]);
  await nftFile.saveIPFS();
  
  const nftFilePath = nftFile.ipfs();
  const nftFileHash = nftFile.hash();
  const metadata = {
    name: createItemNameField.value,
    description: createItemDescriptionField.value,
    nftFilePath: nftFilePath,
    nftFileHash: nftFileHash
  };
  
  const btoa2 = function(str){
    return Buffer.from(str).toString('base64');
    }
//  const object = {"key" : "value"}
 const file = new Moralis.File("metadata.json", {base64 : btoa2(JSON.stringify(metadata))});
 nftFileMetadataFile = await file.save();
 console.log(JSON.stringify(nftFileMetadataFile))
 
//  upload_function(metadata);
 await nftFileMetadataFile.saveIPFS();
  const nftFileMetadataFilePath = nftFileMetadataFile.ipfs();
  const nftFileMetadataFileHash = nftFileMetadataFile.hash();
  
  const Item = Moralis.Object.extend("Item");
  //create new instance of the class
  const item = new Item();
  item.set('name', createItemNameField.value);
  item.set('description', createItemDescriptionField.value);
  item.set('nftFilePath', nftFilePath.value);
  item.set('nftFileHash', nftFileHash.value);
  item.set('nftFileMetadataFilePath', nftFileMetadataFilePath.value);
  item.set('MetadataFileHash', nftFileMetadataFileHash.value);
  await item.save();
  console.log(item);
}
and here is the error