如果在函数内,则不会从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 函数

Graph API 不会检索安全组

从 Web Api 调用 Graph Api 不会返回所有用户数据

从GWT代码调用getElementsByTagNameNS

MongoDB 的奇怪日期行为

循环内的异步函数完成后如何调用函数?