Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Conectar o Parse com banco de dados externo?


Se você quer dizer algo como um conector mysql comum, então a resposta é não, você não pode. No momento, a única maneira de fazer parse e algo mais em relação, é consultar de e para Parse. Para ser claro:

  • Se você deseja obter um valor do Parse, que está armazenado no mysql, você deve usar uma solicitação http para um módulo php específico armazenado em seu site php (e implementado por você) que espera algum parâmetro e retorna o resultado em um forma específica, normalmente no formato json, usando também o cabeçalho http application/json.

  • Se você deseja obter um valor do php, que é armazenado no banco de dados de análise, você pode executar uma chamada REST do php seguindo a especificação no site de análise ( https://parse.com/docs/rest/guide/ ), ou simplesmente usando o SDK do php ( https://github.com/ParsePlatform/parse- php-sdk ). Dê uma olhada também no Parse Webhooks.

Pelo que entendi, você já tem um web service funcionando, então, fazendo isso, você apenas faria proxy dos recursos armazenados em seu servidor no mysql para seus clientes através do Parse. Em outras palavras, você deve criar uma função Parse Cloud para cada tipo de informação que deseja recuperar nos clientes usando o Parse SDK (para iOS ou Android) e outra função Parse Colud para cada ação que você executa em seus dispositivos e deseja salvar em seu banco de dados mysql, sempre através do sistema Parse.

Minha opinião pessoal, é ficar no Mysql, principalmente porque no Parse ainda temos muita limitação nas consultas (sem group by, não distinct, query timeout, etc.), enquanto parece ser um serviço muito bom para o push notificação. De qualquer forma tudo isso depende da complexidade do seu software e como eu disse, é apenas a minha opinião.

[Editar]

Aqui um exemplo:

No código de nuvem do Parse, vamos criar uma função de nuvem chamada '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            
        }
    });

});

O módulo 'getUser.php' de exemplo pode ser
<?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();

?>

Espero que ajude