Я хочу создать несколько записей одновременно, используя клиентский скрипт. Вот что я делаю:
var ceateDatasource = app.datasources.Reservation.modes.create;
var newItem = ceateDatasource.item;
newItem.User = user; //'eric'
newItem.Description = description; //'000'
newItem.Location_Lab_fk = lab.value.Id; //'T'
newItem.Area_fk = area.value.Id; //'L'
newItem.Equipment_fk = equipment.value.Id; //'S'
for(var i = 0 ; i < 3; i ++) {
newItem.Start_Date = startDate;
newItem.Start_Hours = '03';
newItem.Start_Minutes = '00';
newItem.End_Date = startDate;
newItem.End_Hours = '23';
newItem.End_Minutes = '30';
// Create the new item
ceateDatasource.createItem();
}
Но результат, который я получаю, таков:
![enter image description here](https://i.stack.imgur.com/EMORM.png)
Три записи созданы, но только первая содержит данные. Две другие записи имеют пустые значения в своих полях. Как мне этого добиться?
Спасибо.
Обновление (2019-3-27):
Мне удалось заставить его работать, поместив все в блок for loop . Однако у меня есть еще один вопрос.
Существует ли какой-либо метод, подобный приведенному ниже образцу кода?
var recordData = [Data1, Data2, Data3]
var ceateDatasource;
var newItem = new Array(recordData.length) ;
for(var i = 0 ; i < recordData.length; i ++) {
ceateDatasource = app.datasources.Reservation.modes.create;
newItem[i] = ceateDatasource.item;
newItem[i].User = recordData[i].user;
newItem[i].Description = recordData[i].Description;
newItem[i].Location_Lab_fk = recordData[i].Location_Lab_fk;
newItem[i].Area_fk = recordData[i].Area_fk;
newItem[i].Equipment_fk = recordData[i].Equipment_fk;
newItem[i].Start_Date = recordData[i].Start_Date;
newItem[i].Start_Hours = recordData[i].Start_Hours;
newItem[i].Start_Minutes = recordData[i].Start_Minutes;
newItem[i].End_Date = recordData[i].End_Date;
newItem[i].End_Hours = recordData[i].End_Hours;
newItem[i].End_Minutes = recordData[i].End_Minutes;
}
// Create the new item
ceateDatasource.createItem();
Во-первых, он подготавливает массив 'newItem' и вызывает 'ceateDatasource.createItem ()' только один раз, чтобы сохранить все новые записи (или элементы).
Я пытаюсь использовать этот метод, но он сохраняет только последнюю запись 'newItem [3]'.
Мне нужно написать функцию обратного вызова в 'ceateDatasource.createItem ()', но Google App Maker всегда показывает предупреждение "Не создавать функции в цикле". Итак, есть ли методы для вызова createItem () один раз, чтобы сохранить несколько записей? Или есть некоторые функции, такие как «array.push», которые можно использовать?
Спасибо.