2013-12-04 3 views
1

Я пытаюсь создать несколько объектов в цикле в Javascript SDK от Parse.Как создать несколько объектов в цикле в Parse.com SDK?

for (var i = 0; i < results.length; i++){ 
    var user = results[i], 
     newPuzzle = new Puzzle(); 
    newPuzzle.set("userAsked", user); 
    newPuzzle.save(); 
} 

Но он работает только для нескольких объектов (от 2 до 5), а затем падает до отклика. Я нашел метод Parse.Object.saveAll (список, параметры), но он не работает для создания AFAIK - только для обновления.

Я также использовал локальную функцию, написанную на чистом Node.js с помощью главного ключа Parse - он может сохранять объекты в цикле и отлично работает. Но мне нужно работать с файловой системой, а местный JavaScript для меня - головная боль.

Как создать несколько объектов в одном запросе в SDK для Parse?

Заранее благодарен!

+2

Как именно этот недостаток? Я считаю, что это должно сработать. Имейте в виду, что 'newPuzzle.save()' является асинхронной операцией, которая не завершается мгновенно. Вы должны успешно выполнить и функцию обратного вызова ошибки: a) дождитесь завершения всех операций сохранения и b) убедитесь, что они успешно завершены (или какая ошибка, если они не работают). Также см. [Документация по анализу] (https://parse.com/docs/js_guide#objects-saving) –

+0

@DanielBaulig Спасибо за комментарий. Сохранение не прерывается, но работает только несколько раз. А также callback не регистрирует ничего, не совсем уверен, почему. newPuzzle.save (null, {success: function (ob) {console.log (obj);}}) – yablokoff

+1

Сохранить isync и возвращает Promise. Вам нужно собрать обещания в массиве, а затем дождаться их завершения, когда я верю. – LostInTheTrees

ответ

3

Вы хотите использовать, saveAll функцию, см пример ниже:

var TimelineEvent = Parse.Object.extend("Timeline"); 

exports.processNotifications = function (notifications, successCallback, failureCallback) { 
    var timelineEvents = []; 
    for (var i = 0; i < notifications.length; i++) { 
    var notification = notifications[i]; 
    if (notification.hasOwnProperty("timelineEvent")) { 
     var timelineEvent = new TimelineEvent(); 
     timelineEvent.set("eventNotificationKey", notification.notificationKey); 
     timelineEvent.set("isDevelopmentAccount", notification.isDebugOnly); 
     timelineEvent.set("eventName", notification.timelineEvent.name); 
     timelineEvent.set("eventDescription", notification.timelineEvent.description); 
     timelineEvent.set("eventValue", notification.timelineEvent.value); 
     timelineEvent.set("channel", notification.channel); 
     timelineEvents.push(timelineEvent); 
    } 
    } 
    Parse.Object.saveAll(timelineEvents, { 
    success:successCallback, 
    error:failureCallback 
    }); 
}; 
Смежные вопросы