hasMany принадлежит к отношениям в мангусте - PullRequest
0 голосов
/ 07 мая 2020

Я новичок в mon goose и пытаюсь изучить его, создав блог с бэкэндом express и интерфейсом реакции. Формы и маршруты работают нормально. Однако есть одна проблема: я не могу получить доступ к сообщениям пользователя, используя функцию заполнения mon goose. Ниже приведены мои модели и функции для получения всех сообщений.

Post.js
import mongoose from 'mongoose';
var PostSchema = mongoose.Schema({
    name: {
        type: String,
        required: true
    },
    data: {
        type: String,
        required: true
    },
    user: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'User',
        required: true
    }
});

var Post = mongoose.model('Post', PostSchema);

export default Post;

User.js

import mongoose from 'mongoose';

var UserSchema = mongoose.Schema({
    email: {
        type: String,
        required: true
    },
    username: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    posts: [{
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Post'
    }]
});

let User = mongoose.model('User', UserSchema);

export default User;

Вот функция, с помощью которой я пытаюсь получить доступ к сообщениям всех пользователей.

import User from '../models/User';
import Post from '../models/Post';

getAllPosts(req, res) {
        const user = User.findOne({_id: req.body.id}).populate('posts').exec((e,r) => {
            if (e) console.log(e);

            res.send(r);
            console.log(r);
        })
    }

// This is how I try to save the posts

postCreatePost(req, res) {
        let name = req.body.name;
        let data = req.body.data;

        const post = new Post({
            name: name,
            data: data,
            user: req.body._id
        });

        post.save((e,p) => {
            if (e) console.log(e);

            console.log(p);

            const user = User.findOne({_id: p.user}, (e,r) => {
                console.log(r);

                r.posts.push(p);
            });
        })
    }

Просто отметим, что проверка выполняется сделано на интерфейсе, который отлично работает. Надеюсь, это поможет вам ответить мне и помочь мне.

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