首页 > 解决方案 > 获取用户 ID 时遇到问题

问题描述

所以我正在构建一个网络应用程序,我有很多工作。但是我正在尝试将我的 user._id 链接到我的项目数据库。但是,当我尝试使用邮递员发布项目时,应用程序崩溃说它无法读取 null 的属性“_id”。我知道我遗漏了一些东西,但老实说,我无法弄清楚我需要实现哪些其他代码。任何帮助都会很棒。谢谢

这是 UserSchema 的代码:

const mongoose = require('mongoose');
const passportLocalMongoose = require("passport-local-mongoose");

const UserSchema = new mongoose.Schema({
  username: {
    type: String,
    trim: true,
    unique: true,
    required: true,
    minlength: 3,
    maxlength: 15
  },
  firstName: {
    type: String,
    required: true,
    minlength: 3,
    maxlength: 15
  },
  lastName: {
    type: String,
    required: true,
    minlength: 3,
    maxlength: 15
  },
  email: {
    type: String,
    unique: true,
    required: true
  },
  resetPasswordToken: String,
  resetPasswordExpires: Date,
  isAdmin: {
    type: Boolean,
    default: false
  }
});

UserSchema.plugin(passportLocalMongoose);

module.exports = mongoose.model("user", UserSchema);

这是 ItemSchema 的代码:

const mongoose = require('mongoose');
const User = require('./user');

const ItemSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true,
    minlength: 3,
    maxlength: 20
  },
  description: {
    type: String,
    required: true
  },
  price: {
    type: Number,
    required: true
  },
  createdBy: {
    id: {
      type: mongoose.Schema.Types.ObjectId,
      ref: "User"
    },
    username: String
  },
  createdAt: {
    type: Date,
    default: Date.now
  }
});

module.exports = mongoose.model("items", ItemSchema);

这是引发错误的路线的代码:

const express = require("express");
const router = express.Router();
const User = require("../models/user");

router.route("/item/add")
.post(function(req, res) {
  User.findById(req.user._id, function(user, err) {
    if (err) {
      console.log(err);
    }
    var item = new Item();
    item.name = req.body.name;
    item.description = req.body.description;
    item.price = req.body.price;
    item.createdBy = { id: req.user._id, username: req.user.username };

    item.save(function(err) {
      if (err) {
        res.send(err);
      }
      res.json({ message: "Item was successfully saved" });
      console.log(item);
    });
  });
});

标签: node.jsmongodbexpress

解决方案


您需要在邮递员中以 json 格式发送数据,例如: {'id':1, 'name':'jhon doe', 'email':'jhondoe@example.com'}

在您的后端文件中,您需要调用 req.body.idnotreq.user._id


推荐阅读