Итак, я пытаюсь получить несколько документов с помощью Mongoose и визуализировать их с помощью механизма просмотра HBS.К сожалению, единственный способ, которым я знаю, как визуализировать представление, это вызвать res.render()
внутри функции обратного вызова для find()
функции, используемой для получения документов из базы данных MongoDB.Таким образом, я могу получить только один документ за раз, и я хотел бы знать, как сохранить несколько документов в переменных, а затем выполнить рендеринг с использованием res.render()
.Кто-нибудь знает, как это сделать?Код маршрутизатора ниже.
По сути, я извлекаю данные из нескольких коллекций и хочу узнать, как сохранить выходные данные функции find()
в качестве переменных, а затем передать их в функцию res.render()
для ее визуализации.Ниже приведена моя попытка сохранить результаты в виде переменных, которые возвращают только обещание.
index.js:
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test');
var Schema = mongoose.Schema;
var moment = require('moment');
var supportForumListSchema = new Schema({
title: String,
description: String,
numPosts: Number,
dateCreated: Date
}, {collection: 'support-forum-listing'});
var artworkForumListSchema = new Schema({
title: String,
description: String,
numPosts: Number,
dateCreated: Date
}, {collection: 'artwork-forum-listing'});
var supportForumList = mongoose.model('supportForumList', supportForumListSchema);
var artworkForumList = mongoose.model('artworkForumList', artworkForumListSchema);
tempDate = new Date(1542325638042);
currentDate = new Date(1542333003752);
console.log("current date:" + currentDate.toDateString());
tempHoursAgo = currentDate - tempDate;
tempHoursAgo = tempHoursAgo / (1000*60*60);
tempDateString = tempHoursAgo.toFixed(0); // could use Number(string) to convert back to number
console.log(tempDateString + "hours ago");
// temp new posts array
var newPosts = [
{postTitle: "Need help!", numViews: 1, datePosted: tempDateString},
{postTitle: "Unknown identifier", numViews: 0, datePosted: tempDateString},
{postTitle: "Messing up my normals", numViews: 3, datePosted: tempDateString},
{postTitle: "Anyone able to help?", numViews: 3, datePosted: tempDateString}
];
/* GET home page. */
router.get('/', function(req, res, next) {
artworkDoc = artworkForumList.find().then(function(doc){
return doc;
});
console.log(artworkDoc);
supportForumList.find().then(function(supportDoc){
res.render('index', { title: 'Home - 3D Artists Forum', headerTitle: "3D Artist Forums", supportForumList: supportDoc , artworkForumList: artworkDoc, latestPosts: newPosts});
});
});
module.exports = router;