Метод GET пользователя не заполняет объект в nodejs - PullRequest
0 голосов
/ 21 февраля 2020

Это моя модель пользователя

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

const User = new Schema ({
    name: {
        type: String,
        required: true
    },
    email: {
        type: String,
        required: true,
        index: { unique: true }
    },
    password: {
        type: String,
        required: true
    },
    posts: [
        {
            type: mongoose.Schema.Types.ObjectId,
            ref: 'Post'
        }
    ]
}, {
    timestamps: true
});

module.exports = mongoose.model('User', User);

Это моя модель сообщения

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

const Post = new Schema ({
    title: {
        type: String,
        required: true
    },
    desc: {
        type: String
    },
    text: {
        type: String,
        required: true
    },
    author: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'User',
        required: true
    }
},{
    timestamps: true
});

module.exports = mongoose.model('Post', Post);

Это мой пользовательский контроллер

const path = require('path');
const User = require('../models/user');

const UserController = {
    async index(req, res) {
        const users = await User.find({}).populate("posts");
        res.json(users);
    },
    async store(req, res) {
        var new_user = new User(req.body);
        new_user.save((err, user) => {
            if (err) {
                res.json(err);
            }
            res.json(user);
        });
    },
    async show(req, res) {
        const user = await User.findOne({_id: req.params.id}).populate('posts');
        res.json(user);
    },

    async posts_by_user(req, res) {
        const user = await User.findOne({_id: req.params.id}).populate('posts');
        res.json(user.posts);
    }
};

module.exports = UserController;

Это мой пост-контроллер

const Post = require('../models/post');

const PostController = {
    async index(req, res) {
        const posts = await Post.find().populate('author');
        res.json(posts);
    },
    async store(req, res) {
        var new_post = new Post(req.body);
        new_post.save((err, post) => {
            if (err) {
                res.json(err);
            }
            res.json(post);
        });

    }
}

module.exports = PostController;

Это мой json вывод для PostController.index

[
    {
        "_id": "5e4f66487ec4b10028f61753",
        "title": "Titulo diferente",
        "desc": "Titulo diferente vegano",
        "text": "Olha o vegano coronga ganhou o oscar de melhor ator",
        "author": {
            "posts": [],
            "_id": "5e4f66377ec4b10028f61752",
            "name": "Lucas",
            "email": "lucas@gmail.com",
            "password": "3214123",
            "createdAt": "2020-02-21T05:10:15.495Z",
            "updatedAt": "2020-02-21T05:10:15.495Z",
            "__v": 0
        },
        "createdAt": "2020-02-21T05:10:32.525Z",
        "updatedAt": "2020-02-21T05:10:32.525Z",
        "__v": 0
    }
]

Это мой json вывод для UserController.index

[
    {
        "posts": [],
        "_id": "5e4f66377ec4b10028f61752",
        "name": "Lucas",
        "email": "lucas@gmail.com",
        "password": "3214123",
        "createdAt": "2020-02-21T05:10:15.495Z",
        "updatedAt": "2020-02-21T05:10:15.495Z",
        "__v": 0
    }
]

Почему не выводит показывать сообщения в UserController.index? PostController.index заполняет объект автора, почему не работает обратное?

...