Mysql
 sql >> Database >  >> RDS >> Mysql

Connetti Parse con un database esterno?

Se intendi qualcosa come un comune connettore MySQL, la risposta è no, non puoi. Al momento, l'unico modo per eseguire l'analisi e qualcos'altro in relazione è interrogare da e verso l'analisi. Per essere chiari:

  • Se vuoi ottenere un valore da Parse, che è memorizzato in mysql, devi utilizzare una richiesta http a un modulo php specifico memorizzato sul tuo sito Web php (e implementato da te) che si aspetta qualche parametro e restituire il risultato in un in modo specifico, normalmente in formato json, utilizzando anche l'intestazione http application/json.

  • Se vuoi ottenere un valore da php, che è memorizzato nel db di analisi, puoi eseguire una chiamata REST da php seguendo le specifiche sul sito web di analisi ( https://parse.com/docs/rest/guide/ ), o semplicemente utilizzando php sdk ( https://github.com/ParsePlatform/parse- php-sdk ). Dai un'occhiata anche ai Parse Webhook.

Da quello che ho capito, hai già un servizio web funzionante, quindi in questo modo avresti semplicemente proxy delle risorse memorizzate sul tuo server su mysql ai tuoi clienti tramite Parse. In altre parole dovresti creare una funzione Parse Cloud per ogni tipo di informazione che vuoi recuperare sui client usando Parse SDK (per iOS o Android) e un'altra funzione Parse Colud per ogni azione che esegui sui tuoi dispositivi e vuoi salvare sul tuo db mysql, sempre tramite il sistema Parse.

La mia opinione personale è di rimanere su Mysql, soprattutto perché su Parse abbiamo ancora molte limitazioni sulle query (nessun raggruppamento per, nessun distinto, timeout delle query, ecc.), mentre sembra essere un ottimo servizio per il push notifica. Comunque tutto questo dipende dalla complessità del tuo software e, come ho detto, è solo la mia opinione.

[Modifica]

Ecco un esempio:

In Analizza codice cloud, creiamo una funzione cloud chiamata 'get_user_info'

Parse.Cloud.define("get_user_info", 

function(request,response){

    // Parameters from client (iOS/Android app)
    var requestedUserId = request.params.user_id;

    // Calling beckend service for getting user information
    Parse.Cloud.httpRequest({
        method: "POST",        
        url: "https://www.yourPhpWebsite.com/getUser.php", /* This could be your url for the proper php module */
        body: { "php_param_user_id":requestedUserId }, /* Here you compose the body request for the http call, passing the php parameters and their values */
        success: function(httpResponse) {

        /* We expect that the php response is a Json string, using the header('application/json'), so: */
        var jsonResponse = JSON.parse(httpResponse.text);

        /* sample structure in jsonResponse: { "name":"Joe", "surname":"Banana", "birth_date":"01-02-1999" } */

        /* Do any additional stuff you need... */

        /* return the result to your iOS/Android client */
        return response.success( { "myRequestedUserInfo" : jsonResponse } );

        },
        error: function(httpResponse) {            
                return response.error({ "msg":"Unable to fetch this user", "code":123456 }); // sample error response            
        }
    });

});

Il modulo di esempio 'getUser.php' potrebbe essere

<?php

$expectedUserId = $_POST['php_param_user_id'];

// query your MySql db using passed user id
$query = "SELECT name,surname,birth_date FROM MyUserTable Where id = ".$expectedUserId;

// perform your query (the above one is just an example, would be better to use PDO and any other check, just to avoid SQL Injection)
// ...
// ..
// .

$resultQuery = row[0];

// sample json structure
$jsonResponseToParse = '{ "name":'.resultQuery["name"].', "surname":'.resultQuery["surname"].', "birth_date":'.resultQuery["birth_date"].' }';

header('application/json');

echo jsonResponseToParse;

exit();

?>

Spero che aiuti