Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点jsapi中的JWT令牌生成_Javascript_Node.js_Mongodb_Jwt - Fatal编程技术网

Javascript 节点jsapi中的JWT令牌生成

Javascript 节点jsapi中的JWT令牌生成,javascript,node.js,mongodb,jwt,Javascript,Node.js,Mongodb,Jwt,我想用我已经在MongoDB集合中创建的用户的登录在我的API中实现JWT令牌,我想通过登录页面对其进行身份验证,目前我正在与邮递员联系,但我无法生成一个,请有人帮助 以下是我的代码:- 1) server.js const jwt=require('jsonwebtoken')//用于创建、签名和验证令牌 const logger = require('morgan'); const mongoose = require("mongoose"); mongoose.Promise = glob

我想用我已经在MongoDB集合中创建的用户的登录在我的API中实现JWT令牌,我想通过登录页面对其进行身份验证,目前我正在与邮递员联系,但我无法生成一个,请有人帮助

以下是我的代码:-

1) server.js

const jwt=require('jsonwebtoken')//用于创建、签名和验证令牌

const logger = require('morgan');
const mongoose = require("mongoose");
mongoose.Promise = global.Promise;
mongoose.connect("mongodb://localhost:27017/saddleHorseacademy");
process.env.SECRET_KEY = "SaddleHorseKey";

app.post('/loginUser',(request,response)=>{
var user =  {
   userName : request.body.userName,
   password : request.body.password
}
   userList.findOne({user},function(error,user){
     if(error){
       console.log(error);
       return response.status(500).send("unable to sign in");
     }
     if(!user){
       return response.status(404).send("not user found");
     }
     else{
       var token =  jwt.sign(user,process.env.SECRET_KEY,{
         expiressInMinutes:1440
       });

      return response.json({
        success:true,
        Message:'Check your token!',
        token: token
      });
    }

   })
});
当我试图通过以下格式与邮递员联系时:-

{
    "userName":"mayank_9",
    "password":"saddle09"
}
它返回的响应不是user find,但在我的数据库中有如下数据

{
        "_id" : ObjectId("5ac48ba8034cf044c0832ea9"),
        "userName" : "mayank_9",
        "password" : "saddle09",
        "__v" : 0
}

请帮我解决这个问题,查询对象
{user}
使用的
find
方法创建了以下对象:

{
  user: {
    userName: 'mayank_9',
    password: 'saddle09'
  }
}
因此,
find
试图将对象与具有该对象作为值的
user
属性相匹配。我假设这不是您收集的记录的结构,因此它不会找到匹配项。直接传递对象将避免以下情况:

 userList.findOne(user, function (err, user) {...});
你应使用:

.findOne(user, function() {...});

没有花括号。

我尝试了这个,但当我尝试调试它时,它仍然说找不到用户。用户列表。findOne(用户)它有用户名和密码信息,但最终按F8键后,它变成了用户:null@MayankPurohit哪个
用户
?对查询对象和返回值都使用
user
。也,使用这些值直接查询数据库,查看它是否返回记录。返回值为的用户我已将用户对象更改为usercredentials,并且它也开始提供错误负载,应该是普通的object@MayankPurohit只要集合中的记录与文章中的记录相似,并且查询对象与某些值,则它应返回匹配的记录。查询对象不匹配(例如键入错误、编码问题等),或者查询的集合错误。使用速记分配的最初问题肯定是个问题。请尝试记录req.body以检查键/值对是否正确。请显示postman的屏幕截图