Мой сервис. js файл работает как надо? - PullRequest
0 голосов
/ 16 февраля 2020

Я новичок в Node.js (и JavaScript в целом), и я использую его для своего проекта. Я продолжаю сталкиваться с этой проблемой в моем файле контроллера, что, когда я вызываю свой служебный файл для обработки, он успешно возвращается, но сервер не останавливается (если это имеет смысл). Почему мой сервер после последней строки кода в моем контроллере не останавливается или не выполняется?

Вот мой parsedata.controller.js:

const { usersInfo } = require("../services/userinfo.service");
const { writeUserData } = require("../services/writeUserData.service");
const { getRedisUserId } = require("../services/getRedisUserId.service");
const redis = require('redis');

let client = redis.createClient();


const parseData = async (req, res) => {
    console.log("Start the data parsing process...");
    const usersData = req.body;

    try {
        holdDataArray = await usersInfo(usersData);
        if (req.body.result.metadata.intentName != "user_pld"){
            console.log("Here's the repsonse:");
            //checking newest intent for user information and getting it
            console.log(holdDataArray);
            res.send(200)
        } else {
            console.log("You're done! Here's your final data to be saved to redis ->")
            console.log(holdDataArray)
            client.hset(`${req.body.sessionId}`, "userInfo", JSON.stringify(holdDataArray), redis.print)
            //res.redirect(200, '../get/usersData');
            //write information to user's account in realtime database
            const redisKey = `${req.body.sessionId}`
            const dbUserVal = getRedisUserId(redisKey)
            dbUserVal.then(function(fulfilled, rejected){
                return fulfilled;
            }).then(function(value){
                console.log("I'm here")

                //THIS IS THE BUG
                wroteUserData = writeUserData(value, holdDataArray);
                if (wroteUserData = true) {
                    //console.log("Synchronization succeeded!")
                    return wroteUserData;
                } else {
                    console.log('Synchronization failed!')
                }
            });

        }


    } catch (error) {
        console.log("I'm here right before the error message")
        console.log(error);
    }

};

module.exports = {
    parseData
};

Вот моя сервисная функция, я использование firebase в качестве бэкэнда

var firebase = require("firebase");

var app = firebase.initializeApp({
    //this stuff in here is good
  });

const writeUserData = async (dbUserId, userdata) => {

    try {
        //get reference of userId in database and save information to it
       var dbRef = firebase.database(app)

       dbRef.ref("users/" + dbUserId).child("c_data").set({
           item1: userdata

       }, function(error){
           if (error){
               //if the write failed
               return false
           }
           else {
               //Data saved successfully
               return true
           }

       });
       /*
       .then(function() {
        //if successfully wrote to firebaseDB
        return true
        }).catch(function(error) {
        //if failed to write firebaseDB
        return false
      });
      */
    } catch (e) {
        throw new Error(e.message)
    }
}


module.exports = {
    writeUserData
};

Наконец, вот код в моем файле маршрутизатора

const express = require('express');
const { parseData } = require("../controllers/parsedata.controller");
const { checkFirebaseLogin } = require("../controllers/checkFirebaseLogin.controller");
const { getRedisInfo } = require("../controllers/getRedisInfo.controller");
var bodyParser = require('body-parser');
var router = express.Router();

//first time user
//will use bodyParser library with all paths in the middleware
router.use(bodyParser.json());  
//router.use(bodyParser.urlencoded({ extended: true}));
router.use(bodyParser.urlencoded({ extended: false }));

router.post('/api/idToken', checkFirebaseLogin);
router.post('/', parseData);

module.exports = router

Перед комментарием, в котором говорится, где находится ошибка, мой код javascript работает нормально. Всякий раз, когда я добавляю закомментированный к нему код, клиент всегда вызывает router.post('/api/idToken', checkFirebaseLogin);, что я не хочу, чтобы он делал. Я работал над этим в течение нескольких недель и очень хотел бы получить помощь / понимание!

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