У меня есть две коллекции: первая - это посты, а вторая - пользователи. Когда пользователь входит в систему и публикует какую-либо историю, он попадает в коллекцию именованных сообщений. Post DB выглядит следующим образом.
{"_id":{"$oid":"5dac6e8f6c56a17a0b15a48b"},"user":{"$oid":"5dab52a4fdcf354ee1a6c58a"},"title":"test","category":"Entertainment","description":"sss","link":"","date":{"$date":{"$numberLong":"1571581583510"}},"__v":{"$numberInt":"0"}}
этот пользователь содержит идентификатор объекта пользователя, который опубликовал историю. User DB похожа на эту
{"_id":{"$oid":"5dab52a4fdcf354ee1a6c58a"},"name":"kush","email":"keshav@gmail.com","img":"https://res.cloudinary.com/kushagent47/image/upload/v1571483341/default-profile-picture-gmail-2_zf1b6h.png","password":"$2a$10$L6L5q4imtqGTR9LoBBgOseKzFVdeU55eugHuQxhWHixnPSaiMdq4q","date":{"$date":{"$numberLong":"1571508900973"}},"__v":{"$numberInt":"0"}}
Post.js
const mongoose = require('mongoose');
const PostSchema = new mongoose.Schema({
title: {
type: String,
required: false
},
description: {
type: String,
required: false
},
tag: {
type: String,
required: false
},
category: {
type: String,
required: false
},
link: {
type: String,
required: false
},
user:{
type: mongoose.Schema.Types.ObjectId,
ref:'users'
},
date: {
type: Date,
default: Date.now
}
});
const Post = mongoose.model('Post', PostSchema);
module.exports = Post;
index.js
const express = require('express');
const router = express.Router();
const { ensureAuthenticated, forwardAuthenticated } = require('../config/auth');
const passport = require('passport');
const Post = require('../models/Post');
const User = require('../models/User');
//WELCOME
router.get('/', (req,res) => {
Post.find({})
.populate('User')
.then(docs => {
res.render('welcome', {
users: docs
});
console.log(docs.user.name);
});
});
//Post Handler
router.post('/', (req, res) => {
const { user, title, description, category, tag, link } = req.body;
const newPost = new Post({
user: req.user.id,
title: title,
category: category,
description: description,
tag: tag,
link: link
});
newPost.save()
.then(
post => {
res.redirect('/dashboard/');
})
.catch(err => console.log(err));
});
// Dashboard
router.get('/dashboard', ensureAuthenticated, function(req, res) {
Post.find(function(err, docs){
res.render("dashboard", {
name: req.user.name,
email: req.user.email,
img: req.user.img,
users: docs
});
});
});
module.exports = router;
User.ejs
const mongoose = require('mongoose');
const UserSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
email: {
type: String,
required: true
},
password: {
type: String,
required: false
},
img: {
type: String,
required: false
},
date: {
type: Date,
default: Date.now
}
});
const User = mongoose.model('User', UserSchema);
module.exports = User;
welcome.ejs
<% users.forEach(function(results){ %>
<%= results.category %>
<%= results.user.name %>
<% }) %>
Я получаю results.category, но я не получаю results.user.name, я попробовал все, но он все еще не работает.
Когда я console.log (docs) показывает мне
[ { _id: 5dacb9028a808c1d733d8b9e,
user: 5dab52a4fdcf354ee1a6c58a,
title: 'IE-Caligo',
category: 'Tech',
description: 'eaffff',
link: '',
date: 2019-10-20T19:44:02.846Z,
__v: 0 } ]