Сценарий приложения / создатель и Большой запрос - PullRequest
0 голосов
/ 01 июня 2018

У меня есть приложение Google (создатель приложений), где я пишу следующий код:

    function runQuery() {
  var projectId = 'projekte-123425512';
  var request = {
    query: 'SELECT title FROM [bigquery-public-data:samples.wikipedia]  where title contains "olimpic" LIMIT 100'
  };
  var queryResults = BigQuery.Jobs.query(request, projectId);
  var jobId = queryResults.jobReference.jobId;
  var names = queryResults.schema.fields.map(function(field){ return field.name; });
  return queryResults.rows.map(function(row) {
    var obj = {};
    for( var i = 0, len = names.length; i < len; ++i ) {
      obj[names[i]] = row.f[i].v;
    }
    return obj;
  });
}

Поэтому я в основном пытаюсь извлечь некоторые данные из Big Query и сохранить их в массиве.Позже я хочу использовать его в качестве расчетной модели и источника данных в моем приложении:

enter image description here

Я уже попробовал это и получил результат в своем логгере:

enter image description here

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

Функция queryRecords должна возвращать массив записей, но массив содержит элемент, который не былзапись.Ошибка: функция queryRecords должна вернуть массив записей, но этот массив содержал элемент, который не был записью.

EDIT

Я обновил свой код

    function runQuery() {
  var projectId = 'nifty-stage-155512';
  var request = {
    query: 'SELECT title FROM [bigquery-public-data:samples.wikipedia]  where title contains "olimpic" LIMIT 100'
  };
  var queryResults = BigQuery.Jobs.query(request, projectId);
  var jobId = queryResults.jobReference.jobId;
  var names = queryResults.schema.fields.map(function(field){ return field.name; });


  //var records = [];  
  return queryResults.rows.map(function(row) {
  var record = app.models.Test.newRecord();
  for (var i = 0, len = names.length; i < len; ++i) {
    // Calculated model should contain correspondent fields
    // all non-defined fields will be ignored
    record[names[i]] =  (row.f[i].v);
  }

  return record;
});
}

Теперь он работает без ошибок, но я все еще не получаю данные в свою сетку:

enter image description here

Есть ли что-то, что я 'отсутствует в конфигурации сетки или источника данных ??

enter image description here

1 Ответ

0 голосов
/ 01 июня 2018

App Maker не позволяет возвращать произвольные объекты через свои источники данных.Все результаты должны быть строго напечатаны:

...

return queryResults.rows.map(function(row) {
  var record = app.models.CalcModelName.newRecord();

  for (var i = 0, len = names.length; i < len; ++i) {
    // Calculated model should contain correspondent fields
    // all non-defined fields will be ignored
    record[names[i]] = row.f[i].v;
  }

  return record;
});

Вот несколько примеров для справки https://developers.google.com/appmaker/samples/calculated-model/ https://developers.google.com/appmaker/samples/jdbc/

...