将Parse与外部数据库连接?

时间:2015-07-23 09:13:12

标签: mysql parse-platform database nosql

我正在开发使用PHP,mysql等传统技术构建的项目,它是一个Web应用程序。 现在我们想在像Andoid,iOS这样的平台上为移动用户构建一个应用程序。 所以我们正在考虑将MySql与Parse.com数据库连接起来。 我知道parse使用NoSql类型的数据库来存储对象。

所以我的问题是我们可以将解析数据库连接到任何其他SQL数据库吗? 如果是,那么我们如何做到这一点?

修改

@Luca laco我刚创建了一个像你一样的新云功能。在下面。

<script type="text/javascript">
    Parse.initialize("APP_ID", "JAVASCRIPT_KEY");


    Parse.Cloud.run('get_parse4j_object', {}, {
            success: function(result) {
            alert(result);
        },
            error: function(error) {
            alert(JSON.stringify(error));
        }
    });
  </script>

我按照Luca Laco解释我的方式。 但是当我从客户端JS调用函数时,我收到错误。 这是我的客户JS

POST https://api.parse.com/1/functions/get_parse4j_object 400 (Bad Request)

在网络标签中,我可以看到

using (SqlConnection conn = new SqlConnection("context connection=true"))
{
    // do your stuff here...
}    

并且错误是:{“code”:141,“message”:“找不到功能”} 我错过了哪里做错了?

1 个答案:

答案 0 :(得分:4)

如果你的意思是像一个普通的mysql连接器,那么响应是否定的,你不能。现在,进行解析和其他关系的唯一方法是从Parse和Parse查询。要明确:

  • 如果你想从Parse中获取一个存储在mysql中的值,你必须使用一个http请求来存储在php网站上(并由你实现)的特定php模块,这些模块需要一些参数,并以特定的方式返回结果,通常是json格式,也使用http头应用程序/ json。

  • 如果你想从php中获取一个存储在解析数据库中的值,你可以按照解析网站(https://parse.com/docs/rest/guide/)上的规范从php运行REST调用,或者只是使用php sdk(https://github.com/ParsePlatform/parse-php-sdk)。另请参阅Parse Webhooks。

根据我的理解,您已经拥有了一个可用的Web服务,所以这样做,您只需通过Parse将存储在mysql服务器上的资源代理到您的客户端。换句话说,您应该为使用Parse SDK(适用于iOS或Android)在客户端上检索的每种类型的信息创建Parse Cloud函数,并为您在设备上执行的每个操作创建另一个Parse Colud函数,并且要保存在你的mysql数据库上,总是通过Parse系统。

我个人认为,是留在Mysql上,特别是因为在Parse上我们对查询仍有很多限制(没有分组,没有明显,查询超时等),而似乎是一个非常好的服务用于推送通知。无论如何,这一切都取决于你的软件的复杂性,正如我所说,只是我的意见。

[编辑]

这是一个例子:

在Parse云代码中,让我们制作一个名为“get_user_info&#39;

的云功能”
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            
        }
    });

});

示例&#39; getUser.php&#39;模块可以是

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

?>

希望有所帮助