0

Я использую heroku для запуска приложения node.js, которое использует gcloud для создания темы, а затем подписаться на нее. Я использую следующий код, так как взято отсюда: https://googlecloudplatform.github.io/gcloud-node/#/docs/v0.16.0/pubsubGoogle Cloud 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 приложение [web.1]: приложение Node работает на порту 36252

Не знаете, почему это может происходить, и не слишком уверен, как отладить эту проблему. Любые предложения будут ценны!

ответ

4

Я заметил пару вопросов, которые, надеюсь, прояснят это.

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` 
}); 
+0

Отлично, большое вам спасибо - теперь я могу получить список тем. Я пытаюсь предоставить права публикации на тему, используя SetIamPolicy, как я описал здесь: [http://stackoverflow.com/questions/31599021/google-cloud-pub-sub-api-push-e-mail/31599464# 31599464], но пока нет успеха - не уверен, как должен выглядеть точный вызов. На данный момент я сделал json-файл, как описано здесь: [https://developers.google.com/gmail/api/guides/push] и называет его следующим: 'themes.SetIamPolicy ('pubsub_policy.json'); '- но темы не определены. Есть идеи? Googling ничего не дал в терминах примеров в node.js ... – Sekoul