У меня есть несколько запросов, включая погоду (openweathermap.org), твиты (twitter.com) и фотографии (unsplash.com). Эти запросы работают, получают данные на консоль. Я использую экспресс-руль для отображения шаблонов. Я не знаю, как передать данные из запроса в шаблон. Отдельные значения, такие как String, Int, передаются, но информация из функций, содержащих запросы, не передается в шаблон. Я пытался отправить данные из запроса различными способами, но ничего не помогает. Что мне нужно сделать, чтобы получить данные из запроса и отправить данные в шаблон HandleBars?
С маршрутами все в порядке, все идет по мере необходимости, основная проблема - перенести данные из запроса в шаблон HandleBars.
unsplash.js
var request = require('request');
module.exports = {
unsplash: function (town){
request({url:'https://api.unsplash.com/search/photos?page=1&query=' + town +'&client_id=ab132a1b9b1c45a089418f5ae851b088260a08967b068620f340f6bf763ea196'}, function(err, res){
if(err){
console.log("Something with unsplash is wrong! Error: " + err.message);
}else if(res){
var search = JSON.parse(res.body);
var array = new Array();
search.results.forEach((e) => {
array.push(e.urls.raw);
});
console.log(array);
return array;
}
})
}
};
mainController.js
const express = require('express');
var router = express.Router();
var common1 = require('./unsplash');
router.get('/tokyo', (req, res) => {
res.render("hotel/mainPage", {
viewTitle: "> TOKYO",
array: common1.unsplash("tokyo")
});
});
module.exports = router;
отель / mainPage.hbs
...
<body>
{{viewTitle}} <-- it works
{{array}} <-- did not work
{{log array}} <-- In the console I get 'undefined'
</body>
...
server.js
const express = require('express');
const path = require('path');
const exphbs = require('express-handlebars');
const bodyparser = require('body-parser');
const Handlebars = require('handlebars');
var app = express();
app.use(bodyparser.urlencoded({
extended: true
}));
app.use(bodyparser.json());
app.set('views', path.join(__dirname, '/views/'));
var common = require('./controllers/unsplash');
app.engine('hbs', exphbs({ extname: 'hbs', defaultLayout: 'mainLayout', layoutsDir: __dirname + '/views/layouts/'}));
app.set('view engine', 'hbs');
app.listen(3000, () => {
console.log('Express server started at port : 3000');
});
Я ожидаю, что URL фотографии будут выглядеть как в консоли:
['https://images.unsplash.com/photo-1503899036084-c55cdd92da26?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjcwNTc0fQ',
'https://images.unsplash.com/photo-1502716197620-bf14ce1651b3?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjcwNTc0fQ']
Но фактический результат - ничто.
Если я наберу это таким образом:
{{log array}}
В консоли я получаю:
не определен