所以我一直在修补SailsJs并且到目前为止非常喜欢它,但我试图从我拥有的博客中删除帖子。这有点问题,因为尝试获取索引视图时连接超时,并且控制台没有通过console.log条目提供反馈。
// BloggerService.js - in api/services
var g = require('googleapis');
var apiKey = 'OUche33eekym0nKEY-uME';
exports.getBlogPosts = function(options, cb) {
g.discover('blogger', 'v3').execute(function(err, client) {
if(err) {
cb = null;
return console.log(err);
} else {
var opts = { 'blogId': options.id, 'maxResults': options.limit, 'fields': 'items(title,content,url)' };
cb = client.blogger.posts.list(opts);
};
});
};
exports.getBlogPost = function(options, cb) {
g.discover('blogger', 'v3').execute(function(err, client) {
if(err) {
cb = null;
return console.log(err);
} else {
var opts = { 'blogId': options.id, 'postId': options.postId };
cb = client.blogger.posts.get(opts);
};
});
};
/**
* BlogController.js
*
* @description ::
* @docs :: http://sailsjs.org/#!documentation/controllers
*/
module.exports = {
index: function(req, res){
BloggerService.getBlogPosts({'id':'86753098675309','limit':6},function(err, blogPosts){
if(err){
return console.log(err);
} else {
console.log(blogPosts.items[0].url);
res = blogPosts;
};
});
}
}
<div>
<% _.each(Model.items, function (blogPost) { %>
<div class="panel panel-default">
<div class="panel-heading"><%= blogPost.title %></div>
<div class="panel-body"><%= blogPost.content %><input type="hidden" value="<%= blogPost.id %>"></div>
</div>
<% }) %>
</div>
非常感谢任何帮助。谢谢你花时间看这个。
非常感谢斯科特,他让我更接近最终结果。这是我到目前为止所做的,但只需要通过discover / apiKeys清除身份验证问题。
exports.getBlogPosts = function(options, cb) {
g.discover('blogger', 'v3').execute(function(err, client) {
if(err) {
cb(err);
} else {
var opts = { 'blogId': options.id, 'maxResults': options.limit, 'fetchBodies': false, 'fields': 'items(title,url)' }
client.blogger.posts.list(opts).withApiKey(apiKey).execute(cb);
};
});
};
exports.getBlogPost = function(options, cb) {
g.discover('blogger', 'v3').execute(function(err, client) {
if(err) {
cb(err);
} else {
var opts = { 'blogId': options.id, 'postId': options.postId };
client.blogger.posts.get(opts).withApiKey(apiKey).execute(cb);
};
});
};
答案 0 :(得分:1)
您可能不熟悉Node.js,因此您可能需要阅读asynchronous programming with Node和Express使用的req and res objects。我在你的代码中看到的两个问题就是:
您要在BloggerService.js
中为回调分配值,而不是实际调用回调:cb = client.blogger.posts.list(opts)
应该是(基于快速扫描) Google API文档)client.blogger.posts.list(opts).execute(cb)
,如果出现错误cb = null
,则应为cb(err)
。
您正在为响应对象分配值,而不是发送回复:res = blogPosts
应为res.json(blogPosts)
。
至于您何时/何时致电您的服务,文件并不打算成为骑士。这些服务是全球化的,因此可以从任何控制器内的任何地方调用它们;由您作为开发人员来决定您需要服务电话的位置!