当我学习新东西时,我通常会编写代码,在其中我可以使用它,但我会尽可能简单地编写代码。现在我正在学习JsonWebToken的基础知识,所以我在MongoDB中创建了一个非常小的数据库-只有几个文档,有3个字段- _id,name,age和username。然后我在node.js中编写了几行代码,但问题是,我总是收到“TypeError:Cannot read properties of null(阅读'_id')"。如果我将有效负载留空(通过删除'doc._id')然后我得到一个带有安全令牌的响应,但是其中的data属性为null -“data”:{“user”:null}。你能告诉问题出在哪里吗?下面是代码,只有最后几行missig('mongoose.connect.' etc.)
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const jwt = require('jsonwebtoken');
const app = express();
app.use(bodyParser.json());
const userSchema = new mongoose.Schema({
name: { type: String, required: true },
age: { type: Number, required: true },
username: { type: String, required: true },
});
const User = mongoose.model('User', userSchema);
function login(req, res){
User.findOne({ username })
.then(function(doc){
const token = jwt.sign({ doc._id }, 'abc123', {expiresIn: 250});
return res.status(200).json({status: 'success', token, data: {doc}});
});
}
app.post('/login', login);
字符串
有没有人知道如何在响应中获取用户的实际数据?
1条答案
按热度按时间3z6pesqy1#
如果你通过Postman发送一个payload,那么你需要在
User.findOne
函数中访问req.body
对象,如下所示:字符串
此时,
"TypeError: Cannot read properties of null (reading '_id')"
.是因为试图读取doc._id
。它为空,因为没有{username: undefined}
的匹配项。