Недавно я задал несколько вопросов, но я не думаю, что они были достаточно подробными, чтобы получить правильный ответ.
Я новичок в node.js, и сейчас я делаю заявление, которое хранит данные пользователей в mongoDB ATLAS. я сохраняю данные для входа в систему в коллекции, называемой пользователями, и сохраняю их работу в коллекции, называемой проектами. Я пытаюсь вывести информацию о работе (проекте) пользователей только относительно них на их домашнем экране, как только они войдут в систему. Сначала я пытаюсь найти и прочитать две коллекции с помощью методов в моем файле приложения. js, затем присоединение к ним, чтобы связать, что работа для какого пользователя. затем вывод их в моем файле e js в виде таблицы. Тем не менее, я чувствую, что сделал это совершенно неправильно. ниже - файл моего приложения. js, а под маршрутами я помещаю методы find () и $ lookup. Я уверен, что это совершенно неправильно, но мне не повезло.
const express = require('express');
const expressLayouts = require('express-ejs-layouts');
const mongoose = require('mongoose');
const flash = require('connect-flash');
const session = require('express-session');
const passport = require('passport');
const app = express ();
require('./connections/passport')(passport);
const db = require('./connections/dblink').MongoURI;
mongoose.connect(db, {useNewUrlParser: true})
.then(() => console.log('Connected Successfully'))
.catch(err => console.log(err));
app.set('view engine', 'ejs')
app.use(expressLayouts);
app.use(express.urlencoded({extended: true}));
// Express Session
app.use(session({
secret: 'psst',
resave: true,
saveUninitialized: true
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(express.static('public'));
app.use(flash());
app.use((req, res, next) =>{
res.locals.good = req.flash('good');
res.locals.bad = req.flash('bad');
res.locals.error = req.flash('error');
next();
});
// ========================
// Routes
// ========================
app.get('/projects', (req, res) => {
db.collection('projects').find().toArray()
.then(projects => {
res.render('homepage.ejs', { projects: projects })
})
.catch(/* ... */)
})
app.get('/users', (req, res) => {
db.collection('users').find().toArray()
.then(projects => {
res.render('homepage.ejs', { users: users })
})
.catch(/* ... */)
})
app.get('/projects', (req, res) => {
db.collection('projects').aggregate([
{ $lookup:
{
from: 'users',
localField: 'username',
foreignField: 'projecttitle',
as: 'activeuserprojects'
}
}
]).toArray(function(err, res) {
if (err) throw err;
console.log(JSON.stringify(res));
db.close();
});
});
app.post('/activeuserprojects', (req, res) => {
projectsCollection.insertOne(req.body)
.then(result => {
res.redirect('/')
})
.catch(error => console.error(error))
})
app.use('/', require('./pathways/index'));
app.use('/users', require('./pathways/users'));
//create port to run scheduling app on
const PORT = process.env.PORT || 1000;
app.listen (PORT, console.log (The server has successfully started on port:${PORT}
));
Я прошу прощения, если я сделал это неправильно, но я надеюсь вывести данные на Зарегистрированные пользователи homepage.e js в таблице, отображающей их работу, показанную ниже
<section data-position="projects">
<table class="table table-bordered">
<thead>
<tr>
<th>Project Title</th>
<th>Project ID</th>
<th>Due Date</th>
<th>Project Details</th>
<th>Edit/Delete</th>
</tr>
</thead>
<tbody>
<% for(var i = 0; i < projects.length; i++) {%>
<tr>
<td><%= projects[i].projecttitle %></td>
<td><%= projects[i].projectid %></td>
<td><%= projects[i].date %></td>
<td><%= projects[i].projectdetails%></td>
<td>
<a class="add" title="Add" data-toggle="tooltip"><i class="material-icons"></i></a>
<a class="edit" title="Edit" data-toggle="tooltip"><i class="material-icons"></i></a>
<a class="delete" title="Delete" data-toggle="tooltip"><i class="material-icons"></i></a>
</td>
</tr>
</tbody>
<% } %>
</table>
</section>
, затем каждый раз, когда я пытаюсь проверить это, это выдает ^^^
Я точно знаю, что это будет не единственная проблема, однако это первая проблема, которая мешает мне двигаться вперед.
Если бы кто-то мог ответить мне тем, что мне нужно чтобы решить эту проблему, мы будем очень признательны, и если вам нужно больше кода, пожалуйста, дайте мне знать. Большое спасибо