【问题标题】:Google Cloud PubSub - can't seem to get topicsGoogle Cloud PubSub - 似乎无法获取主题
【发布时间】:2015-10-15 12:37:54
【问题描述】:

我正在使用 heroku 运行一个 node.js 应用程序,该应用程序使用 gcloud 创建一个主题,然后订阅它。我正在使用以下代码,取自这里:https://googlecloudplatform.github.io/gcloud-node/#/docs/v0.16.0/pubsub

var gcloud = require('gcloud')({
  keyFilename: 'pubsub_key.json',
  projectId: 'pipedrivesekoul'
});

var pubsub = gcloud.pubsub();

//create a new topic
pubsub.createTopic('projects/pipedrivesekoul/my-new-topic', function(err, topic, apiResponse) {
  var topic = pubsub.topic('my-new-topic');
  topic.publish({
    data: 'New message!'
  }, function(err) {console.log});
});

  var topic = pubsub.topic('my-new-topic');



// Without specifying any options.
topic.subscribe('newMessages', function(err, subscription, apiResponse) {});

var alltopics = pubsub.getTopics({}, function(err, topics, nextQuery, apiResponse) {});

console.log(pubsub.getTopics({}, function(err, topics, nextQuery, apiResponse) {}));

但是,当我在 Heroku 上部署(https 服务器,在 Google 控制台上注册,部署了正确的 API 和 json 文件中的适当密钥)时,它没有看到主题列表,而是返回“未定义”:

2015-07-24T18:06:05.321079+00:00 应用[web.1]:未定义

2015-07-24T18:06:05.337947+00:00 app[web.1]:节点应用程序正在端口 36252 上运行

不确定为什么会发生这种情况,也不确定如何调试此问题。任何建议将不胜感激!

【问题讨论】:

    标签: node.js heroku google-cloud-platform google-cloud-pubsub gcloud-node


    【解决方案1】:

    我发现了几个问题,希望能解决这个问题。

    pubsub.createTopic('projects/pipedrivesekoul/my-new-topic'
    

    您只需要提供my-new-topic 部分。丑陋的长标题会自动发送。

    console.log(pubsub.getTopics({}, function(err, topics, nextQuery, apiResponse) {}));
    

    这实际上是记录调用的结果

    pubsub.getTopics({}, function(err, topics, nextQuery, apiResponse) {})
    

    这是undefined。相反,请尝试:

    pubsub.getTopics({}, function(err, topics, nextQuery, apiResponse) {
      if (err) {
        console.error(err);
        return;
      }
    
      console.log(topics); // hopefully in this array is one called `my-new-topic`
    });
    

    【讨论】:

    • 太好了,非常感谢 - 我现在可以获得主题列表。我正在尝试使用 SetIamPolicy 授予主题的发布权限,正如我在这里描述的那样:[stackoverflow.com/questions/31599021/… 但还没有成功 - 不确定确切的调用应该是什么样子。现在我已经制作了一个 json 文件,如下所述:[developers.google.com/gmail/api/guides/push] 并像这样称呼它:topics.SetIamPolicy('pubsub_policy.json'); - 但主题是未定义的。有任何想法吗?就 node.js 中的示例而言,谷歌搜索完全没有产生任何结果......
    猜你喜欢
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 2017-04-26
    • 2019-11-16
    相关资源
    最近更新 更多