color buttons ios parse.com

ios - buttons - Guardar atributos en un usuario obtenido de una consulta(es decir, no en el usuario actual)



ionic toolbar (2)

Estoy interesado en guardar atributos para los usuarios en la base de datos en función de las acciones que realiza mi currentUser . Basado en el siguiente código, recibo el mensaje de error "El usuario no puede ser salvado a menos que haya sido autenticado mediante logIn o signUp"

NSString *IDToFetch = @"some_id"; PFQuery *query = [PFUser query]; [query whereKey:@"user_id" equalTo:IDToFetch]; PFUser *foundUser = (PFUser *)[query getFirstObject]; foundUser[@"new_column"] = @"Some text"; [foundUser saveEventually]; //here an exception is thrown

Me preguntaba si hay una foundUser a esto donde podría guardar atributos en foundUser sin tener que iniciar sesión en ese usuario. ¡Gracias por tu ayuda!


OK Proporcionar esto como una respuesta, pero básicamente no recomendarlo. Creo que la ruta del código de la nube es más clara al final del día. Pero, esto es posiblemente más fácil ...

Puede crear otra tabla que se empareje con cada usuario.

p.ej.

nombre de la tabla

user_extra_details

campos

Usuario

Puntuación

para que otros usuarios puedan editar este campo en particular en user_extra_details

Pero como sospecha, esto puede generar muchas consultas adicionales, pero no es imposible, simplemente ... inconveniente. Así que aquí tienes cómo acceder a tus datos en esa configuración.

PFQuery *userQuery = [PFQuery queryWithTable:@"Users"]; [userQuery whereKey:Some Key equalTo:some value]; PFQuery *userDetails [PFQuery queryWithTable:@"user_extra_details"]; [userDetails whereKey:@"User" inQuery:userQuery]; [userDetails includeKey:@"User"]; [userDetails fetch];

El problema con el que tienes que equivocarte es que los objetos con detalles duplicados crearán resultados múltiples obviamente. Así que sugiero hacer una eliminación e insertar vs hacer una actualización del objeto extra_detail para ayudar a combatir cualquier duplicado erróneo.


Si desea actualizar un usuario que actualmente no es el usuario conectado, deberá llamar a Parse utilizando la master-key .

Puede hacer esto desde CloudCode por ejemplo;

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

y llamándolo desde su proyecto iOS;

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