parseserver parse node docs javascript ios objective-c parse.com parse-framework

javascript - docs - parse node sdk



Parse iOS SDK: entender el código de la nube (2)

Escenario = poco a poco me estoy volviendo loco con lo que está sucediendo con las características del código de nube de Parse. Solo necesito ayuda de aquellos a los que les gustaría responder algunas preguntas cortas y relativamente simples sobre lo que está sucediendo en algunas funciones de muestra del código de la nube.

El código que usaré en este ejemplo está debajo

1) código de la nube

Parse.Cloud.define(''editUser'', function(request, response) { var userId = request.params.userId, newColText = request.params.newColText; var User = Parse.Object.extend(''_User''), user = new User({ objectId: userId }); user.set(''new_col'', newColText); Parse.Cloud.useMasterKey(); user.save().then(function(user) { response.success(user); }, function(error) { response.error(error) }); });

2) llamado desde iOS

[PFCloud callFunction:@"editUser" withParameters:@{ @"userId": @"someuseridhere", @"newColText": @"new text!" }];

Este código fue tomado de aquí

Pregunta 1 =

(request, response)

Estoy confundido por lo que es esto. ¿Es esto como encasillamiento en iOS donde estoy diciendo (en la llamada de iOS) quiero pasar un NSString en esta función ("userId") y dentro de la función del código de la nube voy a llamarlo "solicitud"? ¿Eso es lo que está pasando aquí?

Pregunta 2 =

Parse.Object.extend(''_User'')

¿Está tomando la clase "Usuario" de la base de datos de Parse para que un "tipo de PFO" pueda actualizarlo creando un nuevo "usuario" en la línea debajo de él?

Es esto como un ...

PFObject *userObject = [PFObject objectWithClassName:@"User"]?

Pregunta 3 =

user.set(''new_col'', newColText)

Obviamente, esto ''establece'' los valores que se guardarán en el PFUser (~ Creo). Sé que la variable "newColText" es el texto que se debe establecer, pero ¿qué es ''new_col''? Lo único que se me ocurre es que esto establece el nombre de una nueva columna en la base de datos de cualquier tipo que se pase a través de la "solicitud".

Es esto como un ...

[[PFUser currentUser] setObject: forKey:]

Pregunta 4 =

Parse.Cloud.useMasterKey()

Sin ser demasiado técnico, ¿esto es básicamente todo lo que tengo que escribir antes de poder editar un objeto "Usuario" de otro Usuario?

Pregunta 5 =

user.save().then(function(user) { response.success(user); }

Es esto como un ...

[user saveInBackgroundWithBlock:]?

y si es así, es

function(error) { response.error(error)

simplemente estableciendo lo que sucede si hay un error en saveInBackgroundWithBlock?

Tenga en cuenta que sé iOS, no JavaScript. Intenta ser lo más descriptivo posible para alguien que comprenda el Reino de Apple.


Estoy más o menos en el mismo lugar que tú, pero aquí están mis pensamientos:

  1. No, estos son los parámetros recibidos por la función. Cuando algo llama a la función de nube editUser , tendrá esos dos objetos para usar: request & response . La solicitud es básicamente lo que el dispositivo iOS envió al servidor, y la respuesta es lo que el servidor enviará al dispositivo iOS.
  2. No del todo eso. Es como crear una subclase de _User .
  3. Piense en los tipos de objetos Parse como una tabla de base de datos y sus instancias como filas. El set establecerá (derp) el valor de ''newColText'' en el atributo / columna ''new_col''.
  4. No estoy seguro, nunca usé esa función ya que no manejo objetos de Usuario. Pero podría ser eso.
  5. Casi todo eso. Pero es más como (pseudocódigo, mezcla de JS con Obj-C):

[user saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error){ if(error){ response.error(error); // mark the function as failed and return the error object to the iOS device } else{ response.success(user); // mark the function call as successful and return the user object to the iOS device } }];


Aquí está mi opinión sobre tus preguntas:

  1. El parámetro de request es para que pueda acceder a todo lo que es parte de la solicitud / llamada a su función en la nube, incluye los parámetros pasados ​​( request.params ), el usuario que está autenticado en el cliente ( request.user ) y algunas otras cosas puedes aprender en la documentación . La response es que usted envíe información de regreso al código de llamada, generalmente llama a response.success() o response.error() con una cadena / objeto / etc opcional que se incluye en la respuesta, nuevamente aquí la documentación .
  2. Esa es una forma de crear una instancia de un User , que debido a que es una clase interna especial se denomina _User en _User lugar, lo mismo con _Role y _Installation . Está creando una instancia del usuario con una ID, no creando una nueva (que no tendría una ID hasta que se guarde). Cuando crea un objeto de esta manera, puede "aplicarle un parche" simplemente cambiando las propiedades que desea actualizar.
  3. De nuevo, mire la documentación o un ejemplo , el primer parámetro es el nombre de la columna (se creará si no existe), el segundo valor es el que desea establecer en esa columna.
  4. Tiene que hacer Parse.Cloud.useMasterKey() cuando necesita hacer algo que el usuario Parse.Cloud.useMasterKey() sesión en el cliente no tiene permiso para hacer. Significa "ignorar toda la seguridad, sé lo que estoy haciendo".
  5. Está viendo una cadena de promesas, cada paso en la cadena le permite pasar un controlador de "éxito" y un controlador opcional de "error". Hay una gran documentación . Es muy útil cuando quieres hacer un par de cosas en orden, por ejemplo

Código de muestra:

var post = new Parse.Object(''Post''); var comment = new Parse.Object(''Comment''); // assume we set a bunch of properties on the post and comment here post.save().then(function() { // we know the post is saved, so now we can reference it from our comment comment.set(''post'', post); // return the comment save promise, so we can keep chaining return comment.save(); }).then(function() { // success! response.success(); }, function(error) { // uh oh! // this catches errors anywhere in the chain response.error(error); });