parse open example parse.com promise cloud-code

parse.com - open - En el código de la nube, llama a una función Parse.Cloud.run más de una vez en la serie



parse server js sdk (2)

Digamos que tiene una función de código de nube "definir" Parse.com ...

Parse.Cloud.define("exampleDefineFunction", function(request, response) { ... response.success("ok") ... response.error("doh") });

Quiero hacer otra función de código de la nube,

que llama a definir la función varias veces en serie ,

con uno esperando el próximo, como en una cadena de promesa en serie

Se puede hacer esto?


¿Ha considerado usar un gancho de nube beforeSave para hacer la comprobación previa a guardar?

En términos de ejecutarlos de uno en uno, podría considerar utilizar una cadena de promesas en serie para poner en cola todo lo que necesite. Cada promesa tendrá su propio par de devoluciones para su manejo si la promesa fue resuelta o rechazada.

Además, la configuración actual parece que hará que rápidamente llegues al límite de solicitud de tu API. ¿Ha pensado en realizar una única consulta con la matriz de URL para comprobar como una restricción? Con esa consulta, sabrá cuáles de los elementos en la matriz ya existen.


¡Creo que esto debería hacer el truco!

En este escenario, queremos usar Parse.Promise.when()

Devuelve una nueva promesa que se cumple cuando se resuelven todas las promesas de entrada. Si alguna promesa en la lista falla, entonces la promesa devuelta fallará con el último error. Si todos tienen éxito, la promesa devuelta tendrá éxito, y los resultados serán el resultado de todas las promesas de entrada

Intenté que sea bastante autodocumentado, pero avíseme si tiene alguna pregunta. ¡Espero que esto ayude!

// The promise chain for bulk image collection Parse.Cloud.define("fetchBulkImages", function(request, response) { // Array of URLs var urls = request.object.get("urls"); // Array of promises for each call to fetchImage var promises = []; // Populate the promises array for each of the URLs _.each(urls, function(url) { promises.push(Parse.Cloud.run("fetchImage", {"url":url})); }) // Fulfilled when all of the fetchImage promises are resolved Parse.Promise.when(promises).then(function() { // arguments is a built-in javascript variable // will be an array of fulfilled promises response.success(arguments); }, function (error) { response.error("Error: " + error.code + " " + error.message); }); }); // Your scraping function to load each individual image Parse.Cloud.define("fetchImage", function(request, response) { ... response.success("image successfully loaded") ... response.error("Error: " + error.code + " " + error.message); });