Domanda

Scenario = Sto lentamente ma sicuramente avvolgendo la mia testa intorno a ciò che sta succedendo con le caratteristiche del codice cloud di Parse. Ho solo bisogno di aiuto da coloro che vorrebbero rispondere ad alcune domande brevi e relativamente semplici su ciò che sta succedendo in alcune funzioni del codice cloud di esempio.

Il codice che utilizzerò in questo esempio è inferiore a

1) codice cloud

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) chiamato da ios

[PFCloud callFunction:@"editUser" withParameters:@{

    @"userId": @"someuseridhere",
    @"newColText": @"new text!"

}];
.

Questo codice è stato scattato da qui

Domanda 1 =

(request, response) 
.

Sono confuso da ciò che è questo. Questo è come typecasting in ios dove sto dicendo (nella chiamata iOS) Voglio passare un NSString in questa funzione ("ID utente") e all'interno della funzione del codice cloud lo chiamerò "Richiesta"? È che cosa sta succedendo qui?

Domanda 2 =

Parse.Object.extend('_User') 
.

Si afferra la classe "Utente" dal database Parse in modo che un "PFObject" di ordinamenti possa aggiornarlo creando un nuovo "utente" nella riga sotto di esso?

è come un ...

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

Domanda 3 =

user.set('new_col', newColText)
.

Questo ovviamente "imposta" i valori da salvare nel PFUSER (~ Penso). So che la variabile "NewColtExt" è il testo che deve essere impostato - ma cos'è "new_col"? L'unica cosa in cui riesco a pensare è che questo imposta il nome di una nuova colonna nel database di qualunque tipo venga trasmesso attraverso la "richiesta"?

è come un ...

[[PFUser currentUser] setObject: forKey:]
.

Domanda 4 =

Parse.Cloud.useMasterKey() 
.

Senza diventare troppo tecnici, è fondamentalmente tutto ciò che devo digitare prima di poter modificare un oggetto "utente" da un altro utente?

Domanda 5 =

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

è come un ...

[user saveInBackgroundWithBlock:]? 
.

e se sì, è

function(error) {
        response.error(error)
.

Basta impostare ciò che accade se c'è un errore nel salvadinbackgroundwithblock?

Tieni presente, conosco iOS - non JavaScript. Quindi cerca di essere il più descrittivo possibile a qualcuno che capisce il regno di Apple.

È stato utile?

Soluzione

Ecco la mia opinione sulle tue domande:

    .
  1. Il parametro request è per consentirti di accedere a tutto ciò che fa parte della richiesta / chiamata alla funzione cloud, include i parametri passati (request.params), l'utente che viene autenticato sul client (request.user) e alcune altre cose può imparare in Documentazione . Il response è per consentirti di inviare informazioni al codice di chiamata, generalmente si chiama response.success() o response.error() con una stringa / oggetto opzionale / ecc. Che viene incluso nella risposta, di nuovo Documentation qui .
  2. È un modo per creare un'istanza di un User, che poiché è una classe interna speciale è denominata _User invece, lo stesso con _Role e _Installation. Sta creando un'istanza dell'utente con un ID, non la creazione di uno nuovo (che non avrebbe un ID fino al salvato). Quando si crea un oggetto in questo modo puoi "patch" semplicemente modificando le proprietà che si desidera aggiornate.
  3. Ancora, guarda il documentazione o Esempio , il primo parametro è il nome della colonna (verrà creato se non esiste), il secondo valore è cosa Vuoi che quella colonna sia impostata.
  4. Devi fare Parse.Cloud.useMasterKey() quando è necessario fare qualcosa che l'utente registrato nel client non ha il permesso di fare. Significa "Ignora tutta la sicurezza, so cosa sto facendo".
  5. Stai vedendo una catena di promessa, ogni passo nella catena consente di passare a un gestore "successo" e un gestore "errore" opzionale. C'è un bel po 'di Documentazione . È molto utile quando vuoi fare un paio di cose in ordine, e.g.
  6. Codice campione:

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

Altri suggerimenti

Sono praticamente nello stesso posto come te, ma ecco i miei pensieri:

    .
  1. No, questi sono i parametri ricevuti dalla funzione.Quando qualcosa chiama la funzione cloud editUser, avrai questi due oggetti da utilizzare: Richiesta & Risposta .La richiesta è fondamentalmente ciò che il dispositivo iOS inviato al server e la risposta è ciò che il server invierà al dispositivo iOS.
  2. non proprio.È come creare una sottoclasse di _User .
  3. Pensa ai tipi di oggetti Parse come tabella di database e sono istanze come righe.set Imposterà (derp) il valore di 'NewColtExt' all'attributo / colonna 'new_col'.
  4. Non sono sicuro, mai usato quella funzione come non gestire gli oggetti dell'utente.Ma potrebbe essere quello.
  5. praticamente così.Ma è più tipo come (pseudo-code, mescolando 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 } }];

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top