mongoose TypeError:无法读取nodejs中null(阅读“_id”)的属性

uyhoqukh  于 2024-01-08  发布在  Go
关注(0)|答案(1)|浏览(213)

当我学习新东西时,我通常会编写代码,在其中我可以使用它,但我会尽可能简单地编写代码。现在我正在学习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.)

  1. const express = require('express');
  2. const mongoose = require('mongoose');
  3. const bodyParser = require('body-parser');
  4. const jwt = require('jsonwebtoken');
  5. const app = express();
  6. app.use(bodyParser.json());
  7. const userSchema = new mongoose.Schema({
  8. name: { type: String, required: true },
  9. age: { type: Number, required: true },
  10. username: { type: String, required: true },
  11. });
  12. const User = mongoose.model('User', userSchema);
  13. function login(req, res){
  14. User.findOne({ username })
  15. .then(function(doc){
  16. const token = jwt.sign({ doc._id }, 'abc123', {expiresIn: 250});
  17. return res.status(200).json({status: 'success', token, data: {doc}});
  18. });
  19. }
  20. app.post('/login', login);

字符串
有没有人知道如何在响应中获取用户的实际数据?

3z6pesqy

3z6pesqy1#

如果你通过Postman发送一个payload,那么你需要在User.findOne函数中访问req.body对象,如下所示:

  1. User.findOne({ username: req.body.username })
  2. //...
  3. //...

字符串
此时,"TypeError: Cannot read properties of null (reading '_id')" .是因为试图读取doc._id。它为空,因为没有{username: undefined}的匹配项。

相关问题