Error: results is not defined at handleError (moralis.js:24284)

/* Moralis init code */
const serverUrl = "https://pof75zn8copb.moralishost.com:2053/server";
const appId = "Bh0MLNPUycz7AV77HPnFFxHtsDnY6nkhz0skZY2k";
const TOKEN_CONTRACT_ADDRESS = "0x78F2d21adC985183D5B2407aDF208A82459476cA"; //TOKEN ADDRESS
Moralis.start({ serverUrl, appId });
/* TODO: Add Moralis Authentication code */

init = async () => {
    hideElement(userItemsSection);
    hideElement(createItemForm);
    hideElement(userInfo);
    window.web3 = await Moralis.Web3.enable();
    window.tokenContract = new web3.eth.Contract(tokenContractAbi, TOKEN_CONTRACT_ADDRESS);
    initUser();
    loadUserItems();
}

initUser = async () => {
    if (await Moralis.User.current()){
        hideElement(userConnectButton);
        showElement(userProfileButton); 
        showElement(openCreateItemButton);
        showElement(openUserItemsButton);

    }else{
        showElement(userConnectButton);
        hideElement(userProfileButton);
        hideElement(openCreateItemButton);
        hideElement(openUserItemsButton);
    }
}

login = async() => {

    try {
        await Moralis.Web3.authenticate();
        initUser();
    } catch (error) {
        alert(error)
    }
}

logout = async() => {
    await Moralis.User.logOut();
    hideElement(userInfo);
    initUser();
}

openUserInfo = async () => {
    user = await Moralis.User.current();
    if (user){
        const email = user.get('email');
        if(email){
            userEmailField.value = email;
        }else{
            userEmailField.value ="";
        }

        userEmailField.value = user.get('username');

        const userAvatar = user.get('avatar');
        if(userAvatar){
            userAvatarImg.src =userAvatar.url();
            showElement(userAvatarImg);
        }else{
            hideElement(userAvatarImg);
        }


        showElement(userInfo);
    }else{
        login();
    }
}

saveUserInfo = async() =>{
    user.set('email', userEmailField.value);
    user.set('username', userUsernameField.value);

    if (userAvatarFile.files.length > 0) {
        const avatar = new Moralis.File("avatar.jpg",  userAvatarFile.files[0]);
        user.set('avatar', avatar);
    }

    await user.save();
    alert("user info save successfully!");
    openUserInfo();
} 

createItem = async () => {
    if (createItemFile.files.length == 0){
        alert("please select file");
        return;
    } else if (createItemNamefield.value.length == 0){
        alert("please give the item name");
        return;
    }
    
    const nftFile =new Moralis.File("nftFiles.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,
        image : nftFilePath,
       // nftFileHash : nftFileHash
    };

    const nftFileMetadataFile = new Moralis.File("metadata.json", {base64 : btoa(JSON.stringify(metadata))});
    await nftFileMetadataFile.saveIPFS();

    const nftFileMetadataFilePath = nftFileMetadataFile.ipfs();
    const nftFileMetadataFileHash = nftFileMetadataFile.hash();

    const nftId = await mintNft(nftFileMetadataFilePath);

    // Simple syntax to create a new subclass of Moralis.Object.
    const Item = Moralis.Object.extend("Item");

    // Create a new instance of that class.
    const item = new Item();
    item.set('name', createItemNamefield.value);
    item.set('description', createItemDescriptionField.value);
    item.set('nftFilePath', nftFilePath);
    item.set('nftFileHash', nftFileHash);
    item.set('metadataFilePath', nftFileMetadataFilePath);
    item.set('metadataFileHash', nftFileMetadataFileHash);
    item.set('nftId', nftId);
    item.set('nftContractAddress', TOKEN_CONTRACT_ADDRESS);
    await item.save();
    console.log(item);
}

mintNft = async (metadaUrl) =>{
    const receipt = await tokenContract.methods.createItem(metadaUrl).send({from: ethereum.selectedAddress});
    console.log(receipt);
    return receipt.events.Transfer.returnValues.tokenId;
}

openUserItems = async () => {
    user = await Moralis.User.current();
    if (user){
        showElement(userItemsSection);
    }else{
        login();
    }
}

loadUserItems = async () => {
    const ownedItems = await Moralis.Cloud.run("getUserItems");
    console.log(ownedItems);
}

hideElement = (element) => element.style.display ="none";
showElement = (element) => element.style.display ="block";

// NAVBAR
const userConnectButton = document.getElementById("btnConnect");
userConnectButton.onclick = login;

const userProfileButton = document.getElementById("btnUserInfo");
userProfileButton.onclick = openUserInfo;

const openCreateItemButton = document.getElementById("btnOpenCreateItem");
openCreateItemButton.onclick = () => showElement(createItemForm);

// USER PROFILE
const userInfo = document.getElementById("userInfo");
const userUsernameField = document.getElementById("txtUsername");
const userEmailField = document.getElementById("emailUsername");
const userAvatarImg = document.getElementById("imgAvatar");
const userAvatarFile = document.getElementById("fileAvatar");

document.getElementById("btnCloseUserInfo").onclick = () => hideElement(userInfo);
document.getElementById("btnLogOut").onclick = logout;
document.getElementById("btnSaveUserInfo").onclick = saveUserInfo;

//ITEM CREATION
const createItemForm = document.getElementById("createItem");

const createItemNamefield = document.getElementById("txtCreateItemname");
const createItemDescriptionField = document.getElementById("textCreateItemDescriptiom");
const createItemPricefield = document.getElementById("numberCreateItemPrice");
const createItemStatusField = document.getElementById("selectCreateItemStatus");
const createItemFile = document.getElementById("filecreateItemFile");
document.getElementById("btnCloseCreateItem").onclick = () => hideElement(createItemForm);
document.getElementById("btnCreateItem").onclick = createItem;

//USER ITEMS
const userItemsSection = document.getElementById("userItems");
const userItems = document.getElementById("userItemsList");
document.getElementById("btnCloseUserItems").onclick = () => hideElement(userItemsSection);
const openUserItemsButton = document.getElementById("btnMyItems");
openUserItemsButton.onclick = openUserItems;
init();
Moralis.Cloud.define("getUserItems", async (request) =>{

const query = new Moralis.Query("EthNFTOwners");
  query.equalTo("contract_type", "ERC721");
  query.containedIn("owner_of", request.user.attributes.accounts);
  const queryResults = await query.find();
  const result = [];
  
  for (let i = 0; i < queryResults.length; ++i) {
	result.push({
	  "id": queryResults[i].attributes.objectId,
      "tokenid": queryResults[i].attributes.token_id,
      "tokenaddress": queryResults[i].attributes.token_address,
      "symbol": queryResults[i].attributes.symbol,
      "tokenuri": queryResults[i].attributes.token_uri,

    });
  }  
  return results;
});

cloud function

on what line in your code you get that error?

it looks like in your cloud function you use result variable in that for and at the end you try to use return results; instead of return result;

1 Like

at my dashboard have id item but at inspect console still array 0