sql >> Base de Datos >  >> RDS >> Mysql

¿Conectar Parse con una base de datos externa?

Si te refieres a algo como un conector mysql común, entonces la respuesta es no, no puedes. En este momento, la única forma de hacer parse y algo más en relación es consultar desde y hacia Parse. Para ser claro:

  • Si desea obtener un valor de Parse, que está almacenado en mysql, debe usar una solicitud http a un módulo php específico almacenado en su sitio web php (e implementado por usted) que espera algún parámetro y devolver el resultado en un manera específica, normalmente en formato json, utilizando también la aplicación de cabecera http/json.

  • Si desea obtener un valor de php, que se almacena en la base de datos de análisis, puede ejecutar una llamada REST desde php siguiendo las especificaciones en el sitio web de análisis ( https://parse.com/docs/rest/guide/ ), o simplemente usando php sdk ( https://github.com/ParsePlatform/parse- php-sdk ). Echa un vistazo también a los Webhooks de Parse.

Por lo que entendí, ya tiene un servicio web en funcionamiento, por lo que al hacer esto, simplemente enviaría los recursos almacenados en su servidor en mysql a sus clientes a través de Parse. En otras palabras, debe crear una función de Parse Cloud para cada tipo de información que desea recuperar en los clientes utilizando Parse SDK (para iOS o Android) y otra función de Parse Colud para cada acción que realiza en sus dispositivos y desea guardar. en su base de datos mysql, siempre a través del sistema Parse.

Mi opinión personal es permanecer en Mysql, especialmente porque en Parse todavía tenemos muchas limitaciones en las consultas (no agrupar por, no distinguir, tiempo de espera de consulta, etc.), mientras que parece ser un muy buen servicio para el empuje notificación. De todos modos, todo esto depende de la complejidad de su software y, como dije, es solo mi opinión.

[Editar]

Aquí un ejemplo:

En el código de nube de Parse, hagamos una función de nube llamada '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            
        }
    });

});

El módulo de muestra 'getUser.php' podría 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 ayude