有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Azure移动应用程序自定义api异常

我正在尝试获取我朋友的帖子,比如社交网络。因为,我不能在客户端将“内部连接”之类的东西用于Easy表,所以我必须使用自定义api。我的做法如下:

Android客户端:

List<Pair<String, String>> params = new ArrayList<Pair<String, String>>();
    params.add(new Pair("id", user.getId()));
    params.add(new Pair("otherParam", otherParam));

    client.getClient().invokeApi("getFeed", "POST", params, new ApiJsonOperationCallback() {
        @Override
        public void onCompleted(JsonElement jsonElement, Exception exception, ServiceFilterResponse response) {
            System.out.println("exception: " + exception.toString());
            GsonBuilder gsonb = new GsonBuilder();
            Gson gson = gsonb.create();

            JsonArray array = jsonElement.getAsJsonArray();
            for (int i = 0; i < array.size(); i++) {
                postList.add(gson.fromJson(array.get(i).getAsJsonObject().toString(), Post.class));
            }
        }
    });

喂。js:

var api = {
post: (request, response, next) => {
    var query = {
        sql: 'SELECT * FROM Posts INNER JOIN Friends ON Posts.userId = Friends.followingId WHERE Friends.followingId = @id ORDER BY Posts.createdAt DESC',
        parameters: [
            { id: 'id', otherParam: 'otherParam' }
        ]
    };

    request.azureMobile.data.execute(query)
        .then(function (results) {
            response.json(results);
        });
    }
};

module.exports = api;

我甚至不确定这是否是一种正确的方法,或者我们可以像这样访问easy表中的表,但exception print中没有任何详细信息。例外情况是“处理请求时出错”。提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    您的代码非常接近,只是SQL语句的参数说明不太正确。您需要按以下格式指定参数:

    var query = {
        sql: 'SELECT * FROM Posts INNER JOIN Friends ON Posts.userId = Friends.followingId WHERE Friends.followingId = @id ORDER BY Posts.createdAt DESC',
        parameters: [
            { name: 'id', value: 'id' }, 
            { name: 'otherParam', value: 'otherParam' }
        ]
    };
    

    这方面的API参考位于http://azure.github.io/azure-mobile-apps-node/module-azure-mobile-apps_src_data_execute.html

    要从服务器获取更多调试信息,可以提高日志记录级别。如果您在本地运行,请使用其他命令行参数运行应用程序:

    node  debug app.js  -logging.level silly
    

    如果您在Azure上运行hosted,则可以将应用程序日志记录(文件系统)的日志级别设置为verbose,并打开日志流。这将向您显示正在执行的确切SQL语句和参数