Pregunta

Escenario = Soy lenta pero seguramente envolver mi cabeza alrededor de lo que está pasando con Analizar la nube de código de cuenta.Sólo necesito un poco de ayuda de aquellos a quienes les gustaría responder a algunas corto, relativamente simples preguntas acerca de lo que está pasando en algunas muestras de nube de código funciones.

El código que voy a utilizar en este ejemplo es la siguiente

1) nube de código

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) llamada de 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 esto es.Es esto como el encasillamiento en iOS donde yo estoy diciendo (en el iOS llamada) quiero pasar un NSString en esta función ("id de usuario") y dentro de la nube de código de la función que yo voy a llamar a la "solicitud"?Es que lo que está pasando aquí?

Pregunta 2 =

Parse.Object.extend('_User') 

Se esta agarrando el "Usuario" de la clase desde el análisis de la base de datos por lo que un "PFObject" de este tipo se puede actualizar mediante la creación de un nuevo "usuario" en la línea de abajo?

Es esto como un...

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

Pregunta 3 =

user.set('new_col', newColText)

Esto, obviamente, 'establece' los valores que se guardan en el PFUser (~creo).Sé que el "newColText" variable es el texto que se va a establecer - pero, ¿qué es 'new_col'?Única cosa que puedo pensar es que este establece el nombre de una nueva columna en la base de datos del tipo que sea, se pasa a través de la "solicitud"?

Es esto como un...

[[PFUser currentUser] setObject: forKey:]

Pregunta 4 =

Parse.Cloud.useMasterKey() 

Sin llegar a ser demasiado técnico, este es básicamente todo lo que tengo que escribir antes de que me puede editar un "Usuario" objeto a partir 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)

sólo la creación de lo que sucede si hay un error en el saveInBackgroundWithBlock?

Por favor tenga en mente, sé que iOS no JavaScript. Así que trate de ser lo más descriptivo posible para alguien que entiende la Manzana reino.

¿Fue útil?

Solución

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

  1. El request parámetro se puede acceder a todo lo que es parte de la solicitud/llamada a la nube de la función, que incluye los parámetros pasados (request.params), el Usuario que se ha autenticado en el cliente (request.user) y algunas otras cosas que usted puede aprender acerca de la documentación.El response es para que usted pueda enviar la información de vuelta al código de llamada, generalmente llamada response.success() o response.error() con una cadena opcional/objeto/etc que se incluye en la respuesta, de nuevo la documentación aquí.
  2. Que es una forma de crear una instancia de un User, que porque es un especial de la clase interna se denomina _User en su lugar, lo mismo con _Role y _Installation.Es la creación de una instancia de el usuario con un ID, no crear uno nuevo (la cual no tiene un ID hasta guardados).Cuando se crea un objeto de esta manera usted puede "parche" es tan solo cambiando las propiedades que desea actualizar.
  3. Una vez más, mira el documentación o un ejemplo, el primer parámetro es el nombre de la columna (se creará si no existe), el segundo valor es lo que usted desea que el conjunto de columnas.
  4. Usted tiene que hacer Parse.Cloud.useMasterKey() cuando usted necesita para hacer algo que el usuario ha iniciado sesión en el cliente no tiene permiso para hacerlo.Significa "ignorar toda la seguridad, yo sé lo que estoy haciendo".
  5. Usted está viendo una promesa de la cadena, cada paso en la cadena le permite pasar en un "éxito" controlador y una opcional de "error" el controlador.Hay algunos grandes documentación.Es super útil cuando se desea hacer un par de cosas en orden, por ejemplo,

Código de ejemplo:

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);
});

Otros consejos

Estoy bastante 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 la función de nube de editUser, tendrá esos dos objetos para usar: Solicitud & respuesta .La solicitud es básicamente lo que el dispositivo iOS enviado al servidor y la respuesta es lo que el servidor enviará al dispositivo iOS.
  2. no exactamente eso.Es como crear una subclase de _User .
  3. Piense en los tipos de objetos de parse como una tabla de base de datos y sus instancias como filas.El set establecerá (Derp) el valor del 'NewColText' al 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. prácticamente eso.Pero es más tipo de tipo (pseudo-código, mezclando JS con obj-c):
  6. [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 } }];

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top