Я использую асинхронный водопад и сталкиваюсь с некоторыми проблемами - PullRequest
0 голосов
/ 06 июля 2019

Я просто хочу получить подробности из документа под названием «slt_timesheet».И я использую async-водопад, чтобы запустить 2-3 функции в последовательности.

Если я использую метод 'get', чтобы получить подробную информацию о slt_timesheet, тогда я получу все детали относительно моего slt-расписания, ноесли я использую асинхронный водопад, я не могу получить подробности из документа.

    const express = require('express');
    const app=express();

    const async=require("async");
    const waterfall=require('async-waterfall');

    const TIMESHEET_DETAILS = require('../Models/slt_timesheet');

    //For filing the timesheet
          router.post('/postTimesheet',(req,res)=>{
            let monthFromClient=req.body.month;
            let projectArrayFromClient=req.body.projectArray;
            let activityArray=req.body.activityArray;
            let hoursArrayForAMonth=req.body.hoursArray;

            let currentDateObject = new Date();
            let lastMonthDateObject= new Date(currentDateObject.getFullYear(),currentDateObject.getMonth()+1,0);
            let nowMonth = monthList[lastMonthDateObject.getMonth()];
            let thisYear = lastMonthDateObject.getFullYear();
            let response;
            let onlyTimeSheetData=[];
            let timesheetRecord;

            try {
               //First check here request month is same as the current method
              if(monthFromClient===nowMonth && req.session.email!=null){
           //async waterfall starts here 
                waterfall([
                    function getTimesheet(callback){
                      console.log('waterfall execution starts here');

                      try {
                        timesheetRecord = TIMESHEET_DETAILS.findOne({email:req.session.email});
                        console.log(timesheetRecord.email);
                        // onlyTimeSheetData=timesheetRecord.timesheetData[0];
                      } catch (e) {
                        console.log(e);
                        callback(e,null);
                        return;
                      }

                      console.log(onlyTimeSheetData);
                      callback(null,onlyTimeSheetData);
                    },

                    function insertNewDataInFormat(err,onlyTimeSheetData) {
                      if(err){
                        console.error(err);
                      }else {
                        console.log(onlyTimeSheetData);
                      }

                    }
                ]);
                response='successful';
              }else {
                response='not successful';
              }
            } catch (e) {
              console.error('error find in main catch'+e);
            } finally {
              res.send(response);
            }

1 Ответ

0 голосов
/ 06 июля 2019

findOne - это асинхронный вызов, и вы вызываете его без обратного вызова.Попробуйте позвонить findOne с обратным вызовом или обещаниями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...