Разбор + Heroku Query 500 Ошибка

Я использовал интерфейс командной строки Parse с новой интеграцией Heroku для создания каркасного проекта NodeJS (parse new).

Пример облачной функции, которую он дает вам:

// Hello
Parse.Cloud.define('hello', function(request, response) {    

  response.success('Hello world! ' + (request.params.a + request.params.b));

});

Я могу использовать этот маршрут с помощью следующей команды CURL, и все работает нормально:

curl -X POST \
 -H "X-Parse-Application-Id: b8qPYS4SLSz0WoSWXlWeQosmF2jJPUPydetg3esR" \
 -H "X-Parse-REST-API-Key: TOJLbfbNXSQcBdDVnU0MnKVu7SyamQvZmorHL5iD" \
 -H "Content-Type: application/json" \
 -d '{"a": "Adventurous ", "b": "Parser"}' \
 https://api.parse.com/1/functions/hello

Но затем я добавил новый класс в свои данные анализа, вставил строку и попытался запросить и вернуть результаты. Я продолжаю получать {"code":143,"error":"Invalid webhook response status: 500 Internal Server Error"} в качестве ответа.

Я вполне уверен, что проблема не в моем коде, и я предполагаю, что есть какой-то шаг настройки или что-то, что я упускаю.

Вот моя модифицированная функция Parse:

// Hello
Parse.Cloud.define('hello', function(request, response) {    
  var query = Parse.Query("Favorites");

  query.find({ useMasterKey: true }).then(
    function(results) {
      response.success('win');
    }, function() {
      response.error('fail');
    });

});

И изображение моего Parse Class со вставленной строкой:

введите здесь описание изображения

Я погуглил ошибку и не могу найти хороших ответов, только плохо сформулированные вопросы. Я здесь в полной растерянности. Заранее спасибо за помощь.


person Tyler Buchea    schedule 01.11.2015    source источник
comment
размещать КЛЮЧИ на форумах не очень хорошая идея!   -  person Robert Rowntree    schedule 01.11.2015
comment
перейти к анализу панели управления и убедиться, что пользователи могут создавать новые классы. при необходимости создайте новый класс на панели инструментов. добавить в него ряды. проверьте в приборной панели. вызовите новый класс из CLI (GET при вызове REST в облачную функцию). затем ПОЛУЧИТЕ их из уровня Node, используя запрос. и все должно работать   -  person Robert Rowntree    schedule 01.11.2015
comment
Это открытые ключи, в них нет ничего секретного. Шаги, которые вы описываете, я уже сделал, как показано в моем хорошо аннотированном посте.   -  person Tyler Buchea    schedule 02.11.2015
comment
У меня очень похожая проблема @TylerBuchea. Буду копать документы. Пожалуйста, дайте мне знать, если вы найдете решение.   -  person Brian Daneshgar    schedule 08.11.2015
comment
Поэтому я решил не использовать Heroku и заставил его работать. Не знаю, что случилось с сервером heroku.   -  person Brian Daneshgar    schedule 08.11.2015
comment
Я проверял это и обязательно дам вам знать, если найду решение. Я рассматриваю возможность отказа от Parse и использования экземпляра Heroku PostgreSQL для своих данных. Рад, что вы тоже смогли найти какое-то решение.   -  person Tyler Buchea    schedule 08.11.2015


Ответы (1)


Похоже, Parse неправильно инициализирован в сценарии после развертывания register-webhooks.js: Parse.initialize(process.env.PARSE_APP_ID, "unused", process.env.PARSE_MASTER_KEY);

А без второго параметра (JavaScript Key) вы не сможете выполнить Parse.Query из облачных функций.

Итак, мое решение:

  1. Добавить новый PARSE_JS_KEY в переменные конфигурации Heroku (значение — ключ JavaScript из Parse->Settings->Keys)

  2. В файле server.js добавьте строку:

    Parse.initialize(process.env.PARSE_APP_ID, process.env.PARSE_JS_KEY, process.env.PARSE_MASTER_KEY);

до require('./cloud/main.js');

PS: Поместить process.env.PARSE_JS_KEY непосредственно в инициализатор register-webhooks.js не получится.

person Max Lunin    schedule 16.11.2015
comment
Вы ПРАВЫ! Я не могу поверить, что совершенно новое сгенерированное приложение может пропустить что-то подобное? - person hitch.united; 14.01.2016