如果在函数内,则不会从mongodb检索API调用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果在函数内,则不会从mongodb检索API调用相关的知识,希望对你有一定的参考价值。
我正在创建一个一次性链接,我试图调用一个执行GET的函数,该GET在呈现密码更改表单之前需要进行验证,但它永远不会返回值。我知道GET是正确的,因为我创建了一个角度服务来测试它,但不是从函数调用中进行测试。为什么URL不返回?而且它从不从函数调用中返回console.log("URL GET")
//URL Link that lets you change pw
app.get("/resetpassword/:id/:token", function(req, res)
console.log("Outputs");
console.log(req.params.id);
console.log(req.params.token);
User.findOne( _id: req.params.id ).then(user =>
var secret = user.password + "-" + user.passwordCreated.getTime();
var payload = jwt.decode(req.params.token, secret);
if (!user)
return res.status(401).json(
message: "Auth failed"
);
console.log("USER FOUND");
console.log(user);
fetchedUser = user;
instagramName = user.instagramName;
let generatedUrl =
"http://localhost:3000/resetpassword/" +
payload.id +
"/" +
req.params.token;
console.log("Before function")
CheckIfUrlExists(generatedUrl);
console.log("after function")
res.send(
'<form action="/resetpassword" method="POST">' +
'<input type="hidden" name="id" value="' +
payload.id +
'" />' +
'<input type="hidden" name="token" value="' +
req.params.token +
'" />' +
'<input type="password" name="password" value="" placeholder="Enter your new password..." />' +
'<input type="submit" value="Reset Password" />' +
"</form>"
);
);
);
function CheckIfUrlExists(urlValue)
app.get("/api/urls", function(req, res)
console.log(res);
Url.findOne( url: urlValue ).then(url =>
console.log("URL GET Request");
console.log(url);
if(url)
res.send("link has expired");
res.end();
);
);
答案
您的名为CheckIfUrlExists
的函数实际上并不检查URL是否存在。它为URL /api/urls
注册了一个处理程序,该处理程序在被调用时将检查作为urlValue
传递的URL。如果该功能仅应检查URL,则不应执行app.get
。
另一答案
您可以尝试这样吗?
我在同一条路线内移动了url查找业务。
app.get("/resetpassword/:id/:token", function(req, res)
console.log("Outputs");
console.log(req.params.id);
console.log(req.params.token);
User.findById(req.params.id).then(user =>
if (!user)
return res.status(401).json(
message: "Auth failed"
);
var secret = user.password + "-" + user.passwordCreated.getTime();
var payload = jwt.decode(req.params.token, secret);
console.log("USER FOUND: ", user);
let generatedUrl = `http://localhost:3000/resetpassword/$payload.id/$req.params.token`;
Url.findOne( url: generatedUrl ).then(url =>
console.log("URL GET Request: ", url);
console.log(url);
if (url)
res.send("link has expired");
res.end();
else
res.send(
'<form action="/resetpassword" method="POST">' +
'<input type="hidden" name="id" value="' +
payload.id +
'" />' +
'<input type="hidden" name="token" value="' +
req.params.token +
'" />' +
'<input type="password" name="password" value="" placeholder="Enter your new password..." />' +
'<input type="submit" value="Reset Password" />' +
"</form>"
);
);
);
);
以上是关于如果在函数内,则不会从mongodb检索API调用的主要内容,如果未能解决你的问题,请参考以下文章
如果从外部方法设置值,则不会调用 Vue 组件的(选择)on-change 函数
从 Web Api 调用 Graph Api 不会返回所有用户数据