URLのスクラップを処理し、成功した場合、そのデータをMongoデータベースに保存して結果を表示するNodeJSアプリケーションにメソッドがあります。NodeJS:結果を表示するためにpugテンプレートを使用する
主な方法:
//url parameter
app.get('/urls/', function(req, res) {
var client = new MetaInspector(req.query.url, {
timeout: 5000
});
client.on("fetch", function() {
var imagesArray = [];
var keywordsArray = [];
var now = new Date();
var dateVal = dateFormat(now, "mm/dd/yyyy h:MM:ss");
for (var i = 0; i < client.images.length; i++) {
// we only want jpgs. nothing else.
if (client.images[i].indexOf('.jpg') > -1) {
imagesArray.push({
"image": client.images[i]
})
}
}
for (var i = 0; i < client.keywords.length; i++) {
keywordsArray.push({
"keyword": client.keywords[i]
})
}
var newUrls = Urls({
url: client.url,
date_added: dateVal,
keywords: req.body.keywords,
author: client.author,
description: client.description,
ogTitle: client.ogTitle,
ogDescription: client.ogDescription,
image: client.image,
images: imagesArray,
keywords: keywordsArray
});
newUrls.save(function(err) {
if (err) throw err;
res.send('Success' + newUrls);
});
});
client.on("error", function(err) {
console.log(err);
});
client.fetch();
});
このすべてがうまくと良い作品。しかし、私はPugとExpressを使用しており、特定のルートを設定しています。私は、res.sendにobjをnewUrlsを送信するのではなく、好きなことは、特定のルートに行くと、私はすでに設定している特定のパグテンプレートに渡す必要があるだろう:
// Route.js
var express = require('express');
var router = express.Router();
var Urls = require('../models/urlModel');
var Footer = require('../models/footerModel');
/* URL Saved Success Page */
router.get('/saved', function (req, res) {});
});
module.exports = router;
マイ位置パグファイルのビューの生活:
/views/saved.pug
div#body
include nav.pug
div.container.item-container
div.row
div.col-md-8
h1 Item successfully saved.
h5 {item}
h6 {description}
私はres.sendメソッドを使用しようとしましたが、動作しません。どのようにこれを処理するための任意の提案?私の理解のために
'res.render()'を使用できない理由はありますか? –
res.render()はデータをレンダリングしますが、ルータを使用して他のページ用に設定したテンプレートを取得します。既存のテンプレートでres.renderを使用する方法はありますか? – TWLATL
私はテンプレートがすでに作成されていると言ったと思いましたが、テンプレートはどこですか?私はあなたの質問に100%明確ではありませんが、必要に応じてpug apiを使用することもできます。 –