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

Forbinde Parse med ekstern database?

Hvis du mener noget som en almindelig mysql-stik, så er svaret nej, det kan du ikke. På nuværende tidspunkt er den eneste måde at lave parse og noget andet i forhold til at forespørge fra og til Parse. For at være klar:

  • Hvis du ønsker at få en værdi fra Parse, som er gemt i mysql, skal du bruge en http-forespørgsel til et specifikt php-modul, der er gemt på din php-hjemmeside (og implementeret af dig), som forventer en parameter, og returnere resultatet i en specifik måde, normalt i json-format, ved hjælp af også http-header-applikationen/json.

  • Hvis du ønsker at få en værdi fra php, som er gemt på parse db, kan du køre et REST-kald fra php efter specifikationerne på parse-webstedet ( https://parse.com/docs/rest/guide/ ), eller blot ved at bruge php sdk ( https://github.com/ParsePlatform/parse- php-sdk ). Tag også et kig på Parse Webhooks.

Efter hvad jeg forstod, har du allerede en fungerende webservice, så hvis du gør dette, vil du bare proxy de ressourcer, der er gemt på din server på mysql, til dine klienter gennem Parse. Med andre ord bør du oprette en Parse Cloud-funktion for hver type information, du ønsker at hente på klienterne ved hjælp af Parse SDK (til iOS eller Android) og en anden Parse Colud-funktion for hver handling, du udfører på dine enheder, og du vil gemme på din mysql db, altid gennem Parse-systemet.

Min personlige mening er at blive på Mysql, især fordi vi på Parse stadig har mange begrænsninger på forespørgslerne (ingen gruppe efter, ingen distinkt, forespørgselstimeout osv.), mens det ser ud til at være en rigtig god service til push notifikation. Alligevel afhænger alt dette af kompleksiteten af ​​din software, og som jeg sagde, er det bare min mening.

[Rediger]

Her et eksempel:

I Parse cloud code, lad os lave en cloud-funktion kaldet '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            
        }
    });

});

Eksemplet 'getUser.php'-modulet kunne være

<?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();

?>

Håber det hjælper




  1. Min OOW15-tur er fuldført

  2. Afslut hængt forespørgsel (inaktiv i transaktion)

  3. Hovedkonceptet for SQL Server-låsning

  4. Mysql indsæt tilfældig datotid i et givet dato- og tidsinterval