1

由于 Azure 移动应用不提供在表之间创建关系的方法,我决定在我的 Node.js 后端创建一个自定义 API 以从相关表返回数据。这个想法是使用 SQL 在后端实现连接,就像在Mobile Services Doc中解释的那样。

问题是我使用的是新的移动应用程序而不是旧的移动服务,所以上面的代码不再工作了。据我了解,架构从移动服务更改为移动应用程序,Node.js SDK 是一个快速中间件包。所以现在我们利用azure-mobile-apps/src/data模块来处理 sql 操作。

所以我现在必须做这样的事情来从 Node 后端内的自定义 API 中的表中读取:

var queries = require('azure-mobile-apps/src/query');

module.exports = {

    "get": function (req, res, next) {

        var myTable = req.azureMobile.tables('TableName');
        var query =  queries.create('TableName');
        query.where({'id':req.query.userId});

        myTable.read(query).then(function(data){
            res.send({ some:  data });
        });
    }
};

但由于 SQL 不再公开,我无法使用 JOIN 命令从相关表中返回数据。我将不得不使用循环和对数据库的许多请求,这违背了目的。

- 有没有办法在新的移动应用 Node.js SDK 上使用 SQL 在后端实现连接?还是有其他更好的方法?

非常感谢你!

4

1 回答 1

1

您可以生成joinsql stmt 并利用sqlQuery可以包含 sql stmt 的对象,然后使用data.execute函数来直接执行 sql stmt。对于类似的场景,您可以参考示例https://github.com/Azure/azure-mobile-apps-node/blob/master/samples/custom-api-sql-stmt/api/completeall.js 。

同时,您可以在 Azure SQL 数据库中创建一个包含 join stmt 的 View 表,方便在 Easy APIs 脚本中使用和维护 View SQL stmt。

于 2016-05-02T02:50:19.067 回答