从Azure移动服务上的多个表中进行选择

时间:2016-05-11 17:32:00

标签: sql angularjs azure azure-sql-database azure-mobile-services

我使用带有Javascript后端的移动服务到我的Ionic App,我需要做一个连接多个表的选择。 这是合约:

我的移动服务上的SQL Server中有3个表:

地点:ID,名称,描述,类型,城市,id_user。

图片:id,id_place,img1,img2,img3。

用户:ID,姓名,电子邮件,图片。

在我的AngularJS代码中,我有以下内容:

var table = client.getTable('Places');
var userid = $localStorage.idusuario;
$scope.ReadPlaces = function(type, city) {
var q = "SELECT p.*, i.*, u.picture, u.name, u.email FROM Places as p INNER JOIN User as u ON p.id_user = u.id INNER JOIN Images as i ON p.id = i.id_place WHERE p.type = " + type + " AND p.city = " + city;
  table.read({query: q}, {user: userid}).done(function(result){
  //do something
  }, function(error) {
  //do something
  }
};

这是我的Places表读取脚本:

function read(query, user, request) {
  //CASO PRECISE, APAGAR DAQUI ATÉ...
  var mssql = request.service.mssql;
  var q = query;

  mssql.query(q, {
      success: function(results) {
          request.respond(statusCodes.OK, results);
      }
  });
  //...AQUI
  request.execute();

}

我需要做的是选择所有来自该地点的所有图像以及来自上传的用户的一些数据

我得到505错误。 那我做错了什么? 我见过的例子告诉我这样做。

更新

我现在正在尝试使用CustomApi,但文档看起来对我来说有点差,所以这就是我目前所拥有的:

我的" ShowAllPlaces" api脚本:

exports.get = function(request, response) {
var mssql = request.service.mssql;
var q = "SELECT p.*, u.picture, u.name, u.email FROM Places as p INNER JOIN User as u ON p.id_user = u.id";
mssql.open({
    success: function(con){
         con.query(q, {
             success: function(results){
                 response.send(results);
             }
         })
    },
        error: function(err) {
            console.log("error is: " + err.message);
        }
})

};

我的AngularJS代码:

client.invokeApi("buscalocalcompleto", {
    method: "get"
  }).done(function(results){
    console.log(results);
  }, function(error){
    console.log(error.message);
  });

但仍然没有工作:(

1 个答案:

答案 0 :(得分:1)

除非您从Mobile Service通常用于其数据存储的数据库中打开一个单独的数据库,否则您不需要使用mssql.open。另外,使用您的回复发送HTTP结果代码:

exports.get = function(request, response) {
    var mssql = request.service.mssql;
    var q = "SELECT p.*, u.picture, u.name, u.email FROM Places as p INNER JOIN User as u ON p.id_user = u.id";
    mssql.query(q, {
        success: function(results){
            response.send(200, results);
        }
    });
};

这个答案假设您使用的是移动服务,而不是较新的移动应用服务。