Не получает все необходимые документы (сообщения) вошедшего в систему пользователя - MongoDB / Node. js - PullRequest
0 голосов
/ 20 февраля 2020

Я хочу получать сообщения пользователя, вошедшего в систему, и отображать его в своей ленте. Прямо сейчас я получаю все сообщения от всех пользователей. Я просто хочу, чтобы отображались сообщения пользователя.

Пользователь. js

const userSchema = new Schema({
    username: { type: String, required: true },
    email: { type: String, required: true },
    password: { type: String, required: true },
    posts: [{
        type: mongoose.Schema.Types.ObjectId,
        ref: "Post"
    }]
}, { timestamps: true })

Сообщение. js

const postSchema = new Schema({
  postTitle: { type: String, required: true },
  postDescription: { type: String, required: true },
  user: { type: Schema.Types.ObjectId, ref: "User" },
}, { timestamps: true }
)

router.get("/posts/:id", usersController.getUserPosts)

usersController. js

    getUserPosts: (req, res) => {
        User.findById(req.params.id).populate("posts").exec((err, posts) => {
            if (err) console.log(err)
            console.log(posts)
        })
    }

Я получаю это:

{ posts: [],
  _id: 5e4e3e7eecd9a53c185117d4,
  username: 'rick',
  email: 'rick@gmail.com',
  createdAt: 2020-02-20T08:08:30.878Z,
  updatedAt: 2020-02-20T08:08:30.878Z,
  __v: 0 }

1 Ответ

1 голос
/ 20 февраля 2020

Попробуйте код ниже:

const mongoose = require('mongoose');
const id = mongoose.Types.ObjectId(req.user.userId);

/** Assuming 'req.user._id' is a string & converting it into ObjectId() to match with user field, Also updated find syntax */

getUserPosts: (req, res) => {
    Post.find({ user: id }, (error, posts) => {
        if (error) console.log("error occurred"); /** return from here */
        if (posts.length) {
            console.log(
                "currentUser->", req.user,
                "posts by this user->", posts
            )
        } else {
            console.log('No posts found for given user')
        }
    })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...