使用我的node.js應用程序,我從電子表格API獲取JSON數據。 它基本上返回以下的JSON。Express node.js - 請求JSON,異步處理
{
"status":200,
"success":true,
"result":[
{
"Dribbble":"a",
"Behance":"",
"Blog":"http://blog.invisionapp.com/reimagine-web-design-process/",
"Youtube":"",
"Vimeo":""
},
{
"Dribbble":"",
"Behance":"",
"Blog":"http://creative.mailchimp.com/paint-drips/?_ga=1.32574201.612462484.1431430487",
"Youtube":"",
"Vimeo":""
}
]
}
這只是一個虛擬的數據,但現在有一點可以肯定的是,我需要不同的處理下,博客的值(博客網址)。隨着博客的網址,我需要所以我使用了一個名爲open-graph-scraper
與data.js我得到了整個JSON和它在路線提供index.js爲data
模塊獲得的Open Graph數據然後,我通過檢查博客列來處理此data
。如果匹配,我通過open-graph-scraper模塊循環值(博客URL)。
這會給我打開每個博客URL的圖形數據,如下面的示例JSON。
{
data:
{ success: 'true',
ogImage: 'http://davidwalsh.name/wp-content/themes/punky/images/logo.png',
ogTitle: 'David Walsh - JavaScript, HTML5 Consultant',
ogUrl: 'http://davidwalsh.name/',
ogSiteName: 'David Walsh Blog',
ogDescription: 'David Walsh Blog features tutorials about MooTools, jQuery, Dojo, JavaScript, PHP, CSS, HTML5, MySQL, and more!' },
success: true
}
所以我的目標就是要通過這個博客JSON從主JSON一個單獨的數據,並把它渲染爲一個單獨的對象,因此它在視圖作爲兩個獨立的JSON可用。但我不確定我的方法與getBlogData
是否正確。 我甚至不確定處理這樣的數據是否是在路由器文件中做的好事情。我會感激一些方向。
index.js
var ogs = require('open-graph-scraper');
var data = require('../lib/data.js');
data(function(data) {
var getBlogData = function (callback) {
var blogURL = [];
if (data.length > 0) {
var columnsIn = data[0];
for(var key in columnsIn) {
if (key === 'Blog') {
for(var i = 0; i < data.length; i++) {
blogURL += data[i][key];
}
}
}
};
ogs({
url: blogURL
}, function(er, res) {
console.log(er, res);
callback(res);
});
}
getBlogData(function (blogData) {
//I want to make this blogData available in render below
but don't know how
});
router.get('/', function(req, res, next) {
res.render('index', {
title: 'Express',
data: data
});
});
});
data.js(我的模塊,獲取JSON數據)
module.exports = function(callback) {
var request = require("request")
var url = "http://sheetsu.com/apis/94dc0db4"
request({
url: url,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
var results = body["result"];
callback(results)
}
})
}
我很高興你能理解我的問題。你的選擇1似乎更適合我的技能水平,但它會涉及視圖和回調中的回調函數,我需要解析JSON並使用HTML綁定,是嗎? –
您需要添加一條新路線才能表達res.send博客數據。你需要添加一些JavaScript到你的頁面來發出請求並解析JSON。您可以使用XMLHttpRequest(它支持JSON,儘管名稱)和JSON.parse,或者如果您使用的是Angular或JQuery之類的東西,您可以使用它們並讓您的生活變得更輕鬆。 – piemonkey
所以在這個路由中,我使用發送而不是渲染,因爲它沒有使用渲染,我需要發出請求來獲取這個發送的JSON。正確? –