How to get variable value, if the variable was inside app.use
chatbot.js:
const express = require('express');
const app = express.Router();
app.use(['/chat', '/chatbot'], (req, res, next) => {
const bot = req.query.bot;
const client = req.query.client;
const text = req.query.text;
const json = require('./json/chatbot')
const result = JSON.parse(JSON.stringify(json.result[req.query.text].reply));
console.log(result)
res.json({'reply': result});
});
module.exports = app;
json/chatbot.js:
const botFile = require('../chatbot');
const bot = botFile.app.bot;
const data1 = ["Hi!", "Yo!", "Wassup", `Hello ${client}`]
const rep1 = data1[Math.round(Math.random() * data1.length)]
const json = {
"result": {
"hi": {
"reply": rep1,
"id": 0
},
"hello": {
"reply": rep1,
"id": 0
},
"sup": {
"reply": rep1,
"id": 0
},
"yo": {
"reply": rep1 ,
"id": 0
},
"who are you": {
"reply": `I'am ${bot}`,
"id": 1
}
}}
module.exports = json;
USED URL:
https://api.domain.repl.co/api/v1/chat?client=ClientTEST&bot=Chat Bot&text=who are you
It should replied
{"reply": "I'am Chat Bot"}
But instead, it replied
{"reply": "I'am undefined"}
There's no error in console
CodePudding user response:
Maybe something like this:
chatbot.js
const express = require('express');
const app = express.Router();
const getBot = require('./getBot.js')
app.use(['/chat', '/chatbot'], (req, res, next) => {
const bot = req.query.bot;
const client = req.query.client;
const text = req.query.text;
const json= getBot(client, bot);
const result = JSON.parse(JSON.stringify(json.result[req.query.text].reply));
console.log(result)
res.json({'reply': result});
});
module.exports = app;
getBot.js
function getBot(client, bot){
const data1 = ["Hi!", "Yo!", "Wassup", `Hello ${client}`]
const rep1 = data1[Math.round(Math.random() * data1.length)]
return {
"result": {
"hi": {
"reply": rep1,
"id": 0
},
"hello": {
"reply": rep1,
"id": 0
},
"sup": {
"reply": rep1,
"id": 0
},
"yo": {
"reply": rep1 ,
"id": 0
},
"who are you": {
"reply": `I'am ${bot}`,
"id": 1
}
}}
}
module.exports = getBot;