Реализация соединений таблиц в бэкенде Mobile Apps Node.js с использованием SQL

Поскольку мобильные приложения Azure не позволяют создавать отношения между таблицами, я решил создать собственный API в своем бэкэнде Node.js для возврата данных из связанных таблиц. Идея заключалась в том, чтобы реализовать соединения в серверной части с помощью SQL, как описано в Документация по мобильным службам.

Проблема в том, что я использую новые мобильные приложения, а не старые мобильные сервисы, поэтому приведенный выше код больше не работает. Насколько я понимаю, архитектура изменилась с Mobile Service на Mobile Apps, а Node.js SDK представляет собой экспресс-пакет промежуточного программного обеспечения. Итак, теперь мы используем azure-mobile-apps/src /data модуль для обработки операций sql.

Итак, теперь мне нужно сделать что-то подобное, чтобы прочитать из таблицы в пользовательском API внутри бэкэнда Node:

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 для возврата данных из связанных таблиц. Мне пришлось бы использовать циклы и много запросов к базе данных, что противоречит цели.

— Есть ли способ реализовать соединения в серверной части с помощью SQL в новом SDK Node.js для мобильных приложений? Или любой другой лучший способ?

Большое спасибо!


person Dan Flict    schedule 30.04.2016    source источник


Ответы (1)


Вы можете сгенерировать join sql 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 для аналогичного сценария. .

Тем временем вы можете создать таблицу View в базе данных SQL Azure, содержащую stmt соединения, для удобства использования в сценариях Easy API и обслуживания stmt View SQL.

person Gary Liu    schedule 02.05.2016
comment
Большое спасибо, это работает! Вот мой окончательный код: module.exports = { "get": function (req, res, next) { var query = { sql: 'SELECT @p1 FROM ...', parameters: [{ name: 'p1', value: req.query.parameterName }] }; req.azureMobile.data.execute(query).then(function (results) { res.send({ some: results }); }, function(error){ console.log('Found an error: ', error); }); } }; - person Dan Flict; 02.05.2016