MERN Stack - те же данные, что и на панели пользователя других пользователей. - PullRequest
0 голосов
/ 04 апреля 2020

Я дважды пытался получить помощь по этому вопросу, но не получил надлежащей помощи для решения возникшей проблемы. Я пытаюсь в последний раз. Я начал изучать стек MERN и завершил небольшой проект. Однако проблема, с которой я сталкиваюсь, заключается в том, что когда пользователь добавляет элементы, те же самые элементы появляются на панели пользователя другого пользователя. Как я могу его кодировать, чтобы вошедший в систему пользователь мог видеть только свои данные? Я многое узнал об этом стеке, поэтому буду признателен, если смогу получить помощь по этой проблеме. Спасибо.

**** файл модели Item. js файл ****

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

//Create Scheme

const ItemSchema = new Schema({

  name:{
    type: String,
    required: true
  },
  date:{
    type:Date,
    default: Date.now
  },
  userId:{
    type:Schema.Types.ObjectId,
    ref: 'user'

}

});


module.exports = Item = mongoose.model('item', ItemSchema);

****api folder item.js code****
const express = require('express');
const router = express.Router();
const auth = require('../../middleware/auth');



//Item model`enter code here`
const Item = require('../../models/Item');

// @route GET api/items
// @description Get All Items
// Access Public
router.get('/', (req, res) =>{
  Item.find({userId: req.body.userId})
    .sort({ date: -1 })
    .then(items => res.json(items));

});

// @route POST api/items
// @description Create an item
// Access Private
router.post('/', auth, (req, res) =>{


  const newItem = new Item({
    name: req.body.name,
    userId: req.body.name


  });


  newItem.save().then(item => res.json(item));

});

// @route DELETE api/items/:id
// @description Delete an item
// Access Private
router.delete('/:id', auth, (req, res) =>{
  Item.findById(req.params.id)
    .then(item => item.remove().then(() => res.json({success:true})))
    .catch(err => res.status(404).json({success: false}));
});




module.exports = router;

1 Ответ

0 голосов
/ 04 апреля 2020

Я только что посмотрел на ваши схемы, у вас нет идентификатора пользователя в схеме элемента, который бы соответствовал тому, какой пользователь добавил этот элемент, как вы узнаете, какой элемент был добавлен каким пользователем?

Взгляд на вашем пути для получения элементов вы делаете запрос, который получает все элементы независимо от идентификатора пользователя.

Запрос должен быть построен следующим образом

Псевдокод Пример:

Item.find({where userId is currentUser.id})
    .sort({ date: -1 })
    .then(items => res.json(items));
...