Я новичок в 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);
, что я не хочу, чтобы он делал. Я работал над этим в течение нескольких недель и очень хотел бы получить помощь / понимание!