Вызов файла XSJS в SAPUI5 для записи данных в HANA

Я пытаюсь создать службу для записи данных из интерфейса SAPUI5 в таблицы HANA. Насколько я проверял, я считаю, что это невозможно через OData Services. Итак, я нашел другой способ: записать файл XSJS с помощью инструкции SQL INSERT.

Теперь моя проблема заключается в использовании этого в UI5. Как и в случае с OData, я бы использовал что-то вроде oModel.create, но теперь я думаю, что это так не работает.

Те, у кого есть ключ?

Спасибо!

Ева

ОБНОВЛЕНИЕ: после использования первого ответа я попытался создать запись в таблице HANA, но получаю ошибку 500. Вот код файла xsjs:

var data = '', conn = $.db.getConnection(), pstmt;  

        if($.request.body){
            data = $.request.parameters.get("firstName");   
        }

        var conn = $.db.getConnection();
        var pstmt = conn.prepareStatement( 'INSERT INTO "Z003HB1N"."T_TEST" (FIRSTNAME) VALUES(?)' );

        pstmt.setString(1,data);

        pstmt.execute();
        pstmt.close();

        conn.commit();
        conn.close();

        doResponse(200,'');

        $.response.contentType = 'text/plain';
        $.response.setBody('Upload ok');
        $.response.status = 200;

Любая подсказка, что может быть не так?


person Eva Dias    schedule 02.09.2015    source источник
comment
Что касается вашего второго вопроса, вы можете изучить это сообщение, в котором показан пример желаемого варианта использования. Определен ли где-то doResponse или это может быть ошибка копирования/вставки? Кстати, с помощью Web IDE (находящейся в разделе ‹server›/sap/hana/ide/) вы сможете отладить файл XSJS. Поскольку вы используете GET, вам не нужна проверка тела во второй строке кода.   -  person Tim Gerlach    schedule 02.09.2015


Ответы (1)


Вы можете просто использовать вызовы .ajax для вызова новой службы oData в HANA и использовать параметры для передачи желаемые значения для вашего сервиса .xsjs.

Пример:

var query = "firstName=Sherlock&lastName=Holmes"
jQuery.ajax({
    url : "url/to/your/Service.xsjs?" + query,
    success : function(response) {
        // will be called once the xsjs file sends a response
        console.log(response);
    },
    error : function(e) {
        // will be called in case of any errors:
        console.log(e);
    }
});

В HANA вы можете получить доступ к предоставленным параметрам в своем сервисе следующим образом:

var firstName = $.request.parameters.get("firstName");
var lastName = $.request.parameters.get("lastName");
person Tim Gerlach    schedule 02.09.2015
comment
Эй, спасибо за ответ! Я пробовал, но не уверен, что это работает. Вы знаете, как я могу сделать console.log в файле xsjs? Таким образом, я бы сейчас, если это работает. Кроме того, я проверил свою консоль, и в ней нет ошибок, так что, должно быть, все в порядке! :) спасибо - person Eva Dias; 02.09.2015
comment
Насколько я знаю, вы не можете просто войти в консоль в xsjs файлах. Однако вы можете просто ответить на вызов REST. Попробуйте следующее в своем xsjs: $.response.status = $.net.http.OK; $.response.setBody("Hello " + firstName + " " + lastName); и проверьте ответ в обработчике успеха вашего вызова ajax (см. отредактированный ответ). - person Tim Gerlach; 02.09.2015
comment
Я пытаюсь отправить массив объектов с помощью сообщения ajax, но не могу понять, как получить доступ к нему в hana. Это запрос, который я делаю из SAPUI5 в URL-адрес hana xs: uploadUrl, тип: POST, данные: {field1: Hi, field2 :Там} - person user557657; 24.07.2017