Not able to fetch or return object from JavaScript action

0
export async function JavaScript_GetSelectedAnswers() { // BEGIN USER CODE   const selectedRows = document.querySelectorAll(".highlight-row"); const answers = []; selectedRows.forEach((row)=>{ answers.push(row.querySelector("span").innerText); }) mx.data.create({ entity: "MyFirstModule.SelectedAnswer", callback: function(obj) { obj.set("option_1", answers[0]); obj.set("option_2", answers[1]); obj.set("option_3", answers[2]); obj.set("option_4", answers[3]); obj.set("option_5", answers[4]);   mx.data.commit({ mxobj: obj, callback: function() { console.log("Answer saved!"); }, error: function(e) { console.error("Commit error: ", e.message); } }); }, error: function(e) { console.error("Create error: ", e.message); } });   return "Hello";   // END USER CODE }     How can i return this object such that i can use it in my nanoflow   
asked
2 answers
1

Hello Boda, 

Please ensure if using nanoflow and calling java script action, return type is set as object and correct entity is selected. 

Try below

export async function JavaScript_GetSelectedAnswers()

{  

 const selectedRows = document.querySelectorAll(".highlight-row");  const answers = [];

  selectedRows.forEach((row) => {    answers.push(row.querySelector("span").innerText);  });

  return new Promise((resolve, reject) => {    mx.data.create({      entity: "MyFirstModule.SelectedAnswer",      callback: function (obj) {        obj.set("option_1", answers[0]);   obj.set("option_2", answers[1]);        obj.set("option_3", answers[2]);        obj.set("option_4", answers[3]);        obj.set("option_5", answers[4]);

 mx.data.commit({         

mxobj: obj,         

callback: function ()

{            console.log("Answer saved!");            resolve(obj); //  Return the object here     

    },         

error: function (e) {           

console.error("Commit error: ", e.message);            reject(e);          },        });      },     

error: function (e) {       

console.error("Create error: ", e.message);        reject(e);      },    });  });

  }

answered
0

Hi Boda Santhosh Kumar,

 

Kindly check this code :

 

export async function JavaScript_GetSelectedAnswers() {
    // BEGIN USER CODE
 
    const selectedRows = document.querySelectorAll(".highlight-row");
    const answers = [];
 
    selectedRows.forEach((row) => {
        const answerText = row.querySelector("span")?.innerText || "";
        answers.push(answerText);
    });
 
    return new Promise((resolve, reject) => {
        mx.data.create({
            entity: "MyFirstModule.SelectedAnswer",
            callback: (obj) => {
                try {
					obj.set("option_1", answers[0]);
					obj.set("option_2", answers[1]);
					obj.set("option_3", answers[2]);
					obj.set("option_4", answers[3]);
					obj.set("option_5", answers[4]);
 
                    mx.data.commit({
                        mxobj: obj,
                        callback: () => {
                            resolve(obj);
                        },
                        error: (commitErr) => {
                            console.warn("Commit error:", commitErr.message);
                            reject(new Error("Commit failed"));
                        },
                    });
                } catch (setError) {
                    console.warn("Error setting attributes:", setError);
                    reject(new Error("Failed to set attributes"));
                }
            },
            error: (createErr) => {
                console.warn("Create error:", createErr.message);
                reject(new Error("Object creation failed"));
            },
        });
    });
 
    // END USER CODE
}

 

 

answered