Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 对这个哈哈大笑。 Vacation : class Vacation { constructor(id, destination, description, attendee_creator_id) { this.id = id; _Node.js_Async Await_Es6 Promise - Fatal编程技术网

Node.js 对这个哈哈大笑。 Vacation : class Vacation { constructor(id, destination, description, attendee_creator_id) { this.id = id;

Node.js 对这个哈哈大笑。 Vacation : class Vacation { constructor(id, destination, description, attendee_creator_id) { this.id = id; ,node.js,async-await,es6-promise,Node.js,Async Await,Es6 Promise,对这个哈哈大笑。 Vacation : class Vacation { constructor(id, destination, description, attendee_creator_id) { this.id = id; this.destination = destination; this.description = description; this.attendee_creator_id = attende

对这个哈哈大笑。
Vacation : class Vacation {
    constructor(id, destination, description, attendee_creator_id) {
        this.id = id;
        this.destination = destination;
        this.description = description;
        this.attendee_creator_id = attendee_creator_id;
        this.creator = undefined;
        this.votes = undefined;
    }
    find_creator(pool){
        return new Promise(function (resolve, reject) {
            var self = this;
            var query = "SELECT * FROM vacation_attendee WHERE id = " + self.attendee_creator_id;
            pool.query(query, function(error, result) {
                if (error) {
                    console.log("Error in query for vacation creator " + error);
                    return reject(error);
                }
            var creator = new attendee.VacationAttendee(result.rows[0].full_name, result.rows[0].email, result.rows[0].password_hash);
            self.creator = creator;
            console.log("creator found ----> " + self.creator.full_name + "in " + self.destination);
            resolve(true);
        });
      })
    }
function get_all_vacations(callback) {
        var sql_vacations_query = "SELECT * FROM vacation";    
        pool.query(sql_vacations_query, function(error, vacations_query_result) {        
            if (error) {
                console.log("error in vacations query " + error);
                callback(error);
            }
            var all_complete = loop_through_vacations(vacations_query_result.rows, pool);
            callback(null, all_complete);
            });
    }


async function loop_through_vacations(vacations_incomplete, pool) {
    var all_vacations = [];
    for (var vacation_data of vacations_incomplete) {
        var vacation_at_index = new vac.Vacation(vacation_data.id, vacation_data.destination, vacation_data.description, vacation_data.attendee_creator_id);            
        vacation_at_index.find_creator(pool)
            .then(()=> {
                all_vacations.push(vacation_at_index);
            })
            .catch(error=> {
                console.log(error);
            });
        console.log("passed vacation " + vacation_at_index.destination);
    }
    return await Promise.all(all_vacations);
}
async function get_all_vacations(callback){
    const allComplete = await makeThatBigQuery(); // + treat data as you want
    callback(null, allComplete);
}
async function loop_through_vacations(vacations_incomplete, pool) {
  var all_vacations = [];
  var promises = []; // store all promise
  for (var vacation_data of vacations_incomplete) {
    var vacation_at_index = new vac.Vacation(vacation_data.id, vacation_data.destination, vacation_data.description, vacation_data.attendee_creator_id);
    promises.push( // push your promise to a store - promises
      vacation_at_index.find_creator(pool)
        .then(() => {
          all_vacations.push(vacation_at_index)
        })
        .catch((err) => {
          console.log(err); // Skip error???
        })
    );
  }
  await Promise.all(promises); // wait until all promises finished
  return all_vacations;
}
function get_all_vacations(callback) {
  var sql_vacations_query = "SELECT * FROM vacation";
  pool.query(sql_vacations_query, async function(error, vacations_query_result) { // async
    if (error) {
      console.log("error in vacations query " + error);
      return callback(error); // return to break process
    }
    var all_complete = await loop_through_vacations(vacations_query_result.rows, pool); // await
    callback(null, all_complete);
  });
}
async function get_all_vacations() {
  var sql_vacations_query = "SELECT * FROM vacation";
  var rows = await new Promise((resolve, reject) => {
    pool.query(sql_vacations_query, function(error, vacations_query_result) {
      if (error) {
        console.log("error in vacations query " + error);
        return reject(error);
      }
      resolve(vacations_query_result.rows);
    });
  })
  var all_complete = await loop_through_vacations(rows, pool); // await
  return all_complete;
}
function get_all_vacations(callback) {
    var sql_vacations_query = "SELECT * FROM vacation";    
    pool.query(sql_vacations_query, async function(error, vacations_query_result) {        
        if (error) {
            console.log("error in vacations query " + error);
            callback(error);
        }
        var all_complete = await loop_through_vacations(vacations_query_result.rows, pool);
        callback(null, all_complete);
    });
}


async function loop_through_vacations(vacations_incomplete, pool) {
    const promises = [];
    for (var vacation_data of vacations_incomplete) {
        var vacation_at_index = new vac.Vacation(vacation_data.id, vacation_data.destination, vacation_data.description, vacation_data.attendee_creator_id);            
        promises.push(vacation_at_index.find_creator(pool));
    }
    return await Promise.all(promises);
}