Возникла проблема с получением идентификатора пользователя - PullRequest
0 голосов
/ 01 мая 2018

Итак, я работаю над созданием веб-приложения, и у меня его много работает. Однако я пытаюсь связать свой user._id с моей базой данных товаров. Но когда я пытаюсь опубликовать элемент с помощью почтальона, приложение вылетает, говоря, что не может прочитать свойство '_id', равное нулю. Я знаю, что мне чего-то не хватает, но я, честно говоря, не могу понять, какой еще код мне нужно реализовать. Любая помощь будет отличной. Спасибо

Вот код для пользовательской схемы:

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);
    });
  });
});

1 Ответ

0 голосов
/ 01 мая 2018

Вам необходимо отправить данные в формате json в почтальоне, например: {'id':1, 'name':'jhon doe', 'email':'jhondoe@example.com'}

в вашем бэкэнд-файле вам нужно позвонить req.body.id не req.user._id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...