Я создал страницу входа и регистрации, и данные пользователей хранятся в коллекции пользователей.Также сделал функциональность для добавления и просмотра нового сообщения, созданного пользователем.Поэтому, когда пользователь создает сообщение, мне нужно ссылаться на данные пользователя (имя пользователя) в коллекции сообщений.Я проверил некоторые форумы, но не смог понять метод заполнения.Мне нужно знать о ссылках на данные в схеме и о том, как извлечь данные из пользовательской коллекции и использовать их в почтовой коллекции.
Вот модель пользователя
var UserSchema = new mongoose.Schema({
username: {
type: String,
index: true
},
password: {
type: String
},
email: {
type: String
},
name: {
type: String
},
profileimage: {
type: String
},
uposts: [{ type: Schema.Types.ObjectId, ref: 'Post'}]
});
var User = module.exports = mongoose.model('User', UserSchema);
Вот модель почты
var PostSchema = new mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
postimage: {
type: String
},
author: {
type: Schema.Types.ObjectId,
ref: "User"
// username: String
},
});
var Post = module.exports = mongoose.model('Post', PostSchema);
Маршрут для добавления нового сообщения
router.post('/add', upload.single('postimage'), (req, res, next) => {
if(req.file) {
console.log('Uploading File..');
var postimage = req.file.filename;
} else {
console.log('No File Uploaded');
var postimage = 'noimage.jpg';
}
var newPost = new Post({
postimage: postimage
});
Post.createPost(newPost, (err, post) => {
if(err) throw err;
console.log(post);
});
req.flash('success', 'Successfully Created Posts');
res.location('/');
res.redirect('/');
});
Маршрутизатор для отображения сообщений
router.get('/view', ensureAuthenticated, (req, res, next) => {
// res.render('viewpost', { user: req.user });
Post.find({_id: {$ne: req.user._id}}, (err, posts) => {
if(err) {
console.log(err);
} else {
res.render('viewpost', {currentUser: req.user, posts: posts});
}
});
});
Также мне нужно отобразитьподробности публикации других пользователей, кроме зарегистрированного пользователя.Было бы очень полезно, если бы вы могли предоставить подходящий метод для того же.