Javascript 将参数从一个文件的app get函数传递到另一个文件
如何为在一个文件中被调用的函数提供一个参数以在另一个文件中使用。我正在尝试使用node.js和express.js创建RestApi。文件entry.routes.js包含以下代码:Javascript 将参数从一个文件的app get函数传递到另一个文件,javascript,node.js,express,post,get,Javascript,Node.js,Express,Post,Get,如何为在一个文件中被调用的函数提供一个参数以在另一个文件中使用。我正在尝试使用node.js和express.js创建RestApi。文件entry.routes.js包含以下代码: app.get("/energy/api/ActualTotalLoad/:AreaName/:Resolution/date/:Year-:Month-:Day", entry.findTwo); app.use( jwt({ secret: privateKey, cr
app.get("/energy/api/ActualTotalLoad/:AreaName/:Resolution/date/:Year-:Month-:Day", entry.findTwo);
app.use(
jwt({
secret: privateKey,
credentialsRequired: false,
getToken: function fromHeaderOrQuerystring (req) {
if (req.headers.authorization && req.headers.authorization.split(' ')[0] === 'Bearer') {
return req.headers.authorization.split(' ')[1];
} else if (req.query && req.query.token) {
return req.query.token;
}
return null;
}
}));
但是,在这个链接中,头中有一些参数作为令牌。我用以下代码解码令牌:
app.get("/energy/api/ActualTotalLoad/:AreaName/:Resolution/date/:Year-:Month-:Day", entry.findTwo);
app.use(
jwt({
secret: privateKey,
credentialsRequired: false,
getToken: function fromHeaderOrQuerystring (req) {
if (req.headers.authorization && req.headers.authorization.split(' ')[0] === 'Bearer') {
return req.headers.authorization.split(' ')[1];
} else if (req.query && req.query.token) {
return req.query.token;
}
return null;
}
}));
在entry.controllers.js文件中,代码如下所示:
exports.findTwo =async function (req, res) {
console.log(req);
const correct =await getResults2(req.user.apikey);
console.log(correct);
if (correct==1){
Entry.findByPars(req.params.AreaName,req.params.Resolution,req.params.Year,req.params.Month,req.params.Day, (err, data) => {
if (err) {
if (err.kind === "not_found") {
res.status(403).send({
message: `No data`
});
} else {
res.status(400).send({
message: "Bad Request"
});
}
} else{
if(req.query.format!==undefined && req.query.format=="csv"){
const {Parser} = require('json2csv');
const json2csvParser=new Parser();
const csv=json2csvParser.parse(data);
res.send(csv);
}
else if (req.query.format==undefined || req.query.format=="json"){
res.send(data);
}
else {
res.status(400).send({
message: "Bad Request"
});
}
}
});
}
else if (correct==2) res.status(402).send({ message: "Out of Quota"});
else res.status(401).send({message: "Not authorized"});
}
在最后一段代码中,当我执行以下命令时
const correct =await getResults2(req.user.apikey);
在这里,我尝试访问req.user.apikey。此参数在entry.routes文件中的其他app.post命令中可用,但在其他文件中不可访问。它以未定义的形式通过。 例如,在entry.routes文件中,以下代码工作正常:
app.post("/energy/api/Logout",function(req,res){
console.log(req.user.apikey);
var jwt=require('jsonwebtoken');
sql.query(`SELECT apikey FROM users WHERE apikey=?`,[req.user.apikey],(err,res1) => {
if (err) {
console.log("error: ", err);
result(err, null);
return;
}
else if (res1.length){
res.status(200).send(" ");
}
else res.status(400).send("Bad Request");
});
});
为什么在文件entry.controllers的entry.findTwo函数中没有传递参数req.user.apikey?