Я новичок в 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);
});
})
}
Просто отметим, что проверка выполняется сделано на интерфейсе, который отлично работает. Надеюсь, это поможет вам ответить мне и помочь мне.