如何将数据属性传递给FatFractal服务器扩展并从扩展代码访问它们?

时间:2013-04-04 00:07:09

标签: web-applications custom-backend

a previous question类似,我问过,我想知道A)如何将单个数据属性传递给服务器扩展,以及B)如何从内部访问这些数据属性服务器扩展源代码。作为侧边栏(并不一定是此问题的主要目的),是否可以从服务器扩展中返回一组FatFractal对象?我在客户端应用程序中使用FatFractal JavaScript SDK。

基本上,我正在创建一个简单的搜索实用程序,其中输入参数将传递给服务器扩展,服务器扩展将返回与搜索条件匹配的FFUser对象数组。

FFDL:

CREATE EXTENSION /SearchUsers AS javascript:require('scripts/Search').searchUsers();

应用程序JS代码:

        function findUsers() {
            if(!ff.loggedIn()) {
                alert("You must be logged in to search for users.");
            }
            else {
                var searchCriteria = $("#input-user-search").val();

                // pass 'searchCriteria' to 'SearchUsers' extension
                // acquire handle to 'matchedUsers' returned from 'SearchUsers'

                ...

            }
        }

服务器扩展JS代码:

var ff = require('ffef/FatFractal');

function searchUsers() {

    var matchedUsers; // an array of FFUser objects
    var searchInput; // the search criteria 


    // acquire handle to 'searchCriteria' passed from client app to assign to 'searchInput'

    ...

    // return 'matchedUsers' to client app

}

...

exports.searchUsers = searchUsers;

同样,评论部分是我需要澄清的部分。其余的实现逻辑我相信我已经弄明白了。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

对于您的应用程序JS代码,您只需将数据作为URL查询参数传递:

var searchCriteria = $("#input-user-search").val();

// suitable validation and URL encoding ...

ff.getArrayFromExtension("/SeachUsers?search=" + searchCriteria,
    function(result) {
        // success
});

(请注意,你也可以使用通常的getArrayFromUri函数,但在这种情况下你必须提供`/ ff / ext / SearchUsers'的完整扩展名。)

然后在您的扩展程序中,您需要先获取传入的参数:

var searchCriteria = ff.getExtensionRequestData().httpParameters['search'];

最后,设置结果:

var r = ff.response();
r.responseCode = 200;
r.result = matchedUsers;

请注意,您也可以使用postObjToExtension函数,并将对象发布到您的扩展程序,但这可能对此方案而言过度。