Как передать данные внешнего rest API в модель в виде массива записей? - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь использовать созданное веб-приложение .net core 2.2 и отображать данные json, ключи И ЗНАЧЕНИЯ в приложении Google App Maker.Мой JS очень и очень слаб (потому что я пытался переопределить основной пример в googles docs уже 7 дней без реального прогресса).

Я боролся, хотя и много, много проблемчтобы получить окончательную ОШИБКУ (я надеюсь).

Когда я фиксирую некоторые данные REST API в хранилище данных.его запрашивают:

  • массив (в js я думаю, массивы - это объект s ... кто знал)
  • ключ (не знаю, как сделать ключ без возврата одного ПОЛНОГО ПУНКТА из массива объектов js, который я создал для своих данных)
  • и для некоторой формы отображение дляобъект (я думаю, что выполнил это требование ... не уверен. это скорее всего вернется после того, как я исправлю ошибку ниже)

ОШИБКА:

The function queryRecords must return an array of records, but the 
array contained an element that was not a record. Error: The 
function queryRecords must return an array of records, but the 
array contained an element that was not a record.

Солнце 22 сентября15:42:46 GMT-700 2019

Executing query for datasource Weather: (Error) : The function 
queryRecords must return an array of records, but the array 
contained an element that was not a record.
at loadWeatherDataSource (CallWeatherService:6:27)
at Weather.LocationTextBox.onValueChange:1:1
at Weather.LocationTextBox.onAttach:1:14

Вс 22 сентября 15:42:46 GMT-700 2019

Executing query for datasource Weather failed.

Код серверной стороны

function clearEmailForm(){


       var url= 'https://xxx.azurewebsites.net/api/xxxxxx/3';


          var response1 = UrlFetchApp.fetch(url);
          var api1= response1;







  return JSON.parse(api1);
      }  

 function cal() {
   var coordinates =  clearEmailForm(); 


     return {
      forecast: coordinates.Scene,
      citystate: coordinates.imageurl
    };
  }
function calculateWeatherModel_() {

  var response;
  try {
    response = cal(); 

  } catch (error) {
    throw new Error('Error Unable to locate provided city: \"' + response +  '\".');
  }

  if (response === null) {
    throw new Error('null Unable to locate provided city: \"' + response + '\".');
  }

  var forecastPeriods = response.forecast;
  var citystate = response.citystate;
  var arr = [];


     var record = app.models.Weather.newRecord();

     arr.push(record.forcast = forecastPeriods  ); 

      var record = app.models.Weather.newRecord();

    arr.push(record.citystate = citystate);



    return arr;
  }

Код на стороне клиента

function loadWeatherDataSource() {
  app.datasources.Weather.load({
    failure: function (error) {
      displayTimedSnackBar(error.toString());
    }
  });
}

Код на стороне клиента

return calculateWeatherModel_();

Заранее спасибо за любые ився подробная помощь здесь .. Я в полной растерянности и мне придется отложить критический проект.

Теперь я буду учиться и приступить к освоению JS, поскольку я вижу явную необходимость!У меня есть мои книги и онлайн-курс, готовый к работе.если я смогу получить детальную помощь по этому вопросу, это даст моему проекту новую жизнь сейчас, а не надолго.Спасибо вам всем!

1 Ответ

1 голос
/ 23 сентября 2019

Я считаю, что ваша проблема здесь:

var arr = [];

var record = app.models.Weather.newRecord();

arr.push(record.forcast = forecastPeriods  ); 

var record = app.models.Weather.newRecord();

arr.push(record.citystate = citystate);

return arr;

Это неправильный способ сделать это.Должно быть так:

var arr = [];
var record = app.models.Weather.newRecord();
record.forcast = forecastPeriods;
record.citystate = citystate;
arr.push(record);
return arr;

Очевидно, что для того, чтобы это работало, ваша расчетная модель должна иметь поле forcast и поле citystate .

Ссылка: https://developers.google.com/appmaker/models/calculated#query_script_example

...