Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

204
Views
Argument of type 'Promise<any[]>' is not assignable to parameter of type 'readonly unknown[]

I have a code like this-

async function fetchData() {
  xlData.map(async (student, id) => {
    const studentExist = await User.findOne({
      email: student.email,
    });
    if (studentExist) {
      let includesStudent = await Class.findOne({
        student: { $in: [studentExist._id] },
      });
      if (!includesStudent) {
        studentsIds.push(studentExist._id);
      }
    }
  });
  return studentsIds;
}
const finalData: any[] = await Promise.all(fetchData());
console.log("final data", finalData);

I am getting an error as follows:

No overload matches this call.   Overload 1 of 2, '(values: readonly unknown[] | []): Promise<unknown[] | []>', gave the following error.
    Argument of type 'Promise<any[]>' is not assignable to parameter of type 'readonly unknown[] | []'.
      Type 'Promise<any[]>' is not assignable to type '[]'.   Overload 2 of 2, '(values: Iterable<any>): Promise<any[]>', gave the following error.
    Argument of type 'Promise<any[]>' is not assignable to parameter of type 'Iterable<any>'.
      Property '[Symbol.iterator]' is missing in type 'Promise<any[]>' but required in type 'Iterable<any>'.ts(2769)

How to solve this?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

The function is not returning a promise,

The first approach it's not dependent on the studentsIds array.

const fetchData = () => {
  const promises = xlData.map(async (student, id) => {
    const studentExist = await User.findOne({
      email: student.email,
    });
    if (studentExist) {
      let includesStudent = await Class.findOne({
        student: { $in: [studentExist._id] },
      });
      if (!includesStudent) {
        return studentExist._id;
      }
    }
  });
  return promises;
};

const result: any[] = await Promise.all(fetchData());

//remove undefined
const students = result.filter((student) => Boolean(student));
console.log("final data", students);

OR

async function fetchData() {
  await Promise.all(
    xlData.map(async (student, id) => {
      const studentExist = await User.findOne({
        email: student.email,
      });
      if (studentExist) {
        let includesStudent = await Class.findOne({
          student: { $in: [studentExist._id] },
        });
        if (!includesStudent) {
          studentsIds.push(studentExist._id);
        }
      }
    })
  );
  return studentsIds;
}
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!