Web applications 如何将对象传递给服务器扩展,如何从扩展中进行访问,如何将对象返回给客户端应用程序?

Web applications 如何将对象传递给服务器扩展,如何从扩展中进行访问,如何将对象返回给客户端应用程序?,web-applications,custom-backend,Web Applications,Custom Backend,我正在使用FatFractal JavaScript SDK,并在我的FFDL文件中声明了一个服务器扩展名,如下所示: CREATE EXTENSION /ChangePassword AS javascript:require('scripts/UserAdministration').changePassword(); 我正在创建一个服务器扩展,以允许用户更改其登录密码。在我的客户端应用程序中,我想将一个简单的对象传递给/ChangePassword,其中包含登录用户的用户名、当前(旧)密

我正在使用FatFractal JavaScript SDK,并在我的FFDL文件中声明了一个服务器扩展名,如下所示:

CREATE EXTENSION /ChangePassword AS javascript:require('scripts/UserAdministration').changePassword();
我正在创建一个服务器扩展,以允许用户更改其登录密码。在我的客户端应用程序中,我想将一个简单的对象传递给
/ChangePassword
,其中包含登录用户的用户名、当前(旧)密码和新的所需密码。假设我已经填充了所述对象,那么我将如何A)将对象从客户端应用程序传递给服务器扩展,B)在服务器扩展中获取传递对象的句柄,以及C)在更改完成后从服务器扩展返回确认对象(最好)或消息给客户端应用程序

FFDL:

客户端应用程序JS代码:

    ...

    function ChangePassInfo() {
        this.userName = null;
        this.currentPassword = null;
        this.newPassword = null;
        return this;
    }

    ...

    function changePassword() {
        var uname = ff.loggedInUser().userName;
        var oldPass = $("#input-curr-pass").val();
        var newPass = $("#input-new-pass").val();

        var requestInfo = new ChangePassInfo();
        requestInfo.userName = uname;
        requestInfo.currentPassword = oldPass;
        requestInfo.newPassword = newPass;

        // pass 'requestInfo' to 'ChangePassword' extension
        // acquire handle to confirmation object/message returned from 'ChangePassword'

        ...

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

...

function ChangePasswordRequest() {
    this.clazz = 'ChangePasswordRequest';
    this.createdBy = 'system';
    this.userName = null;
    this.oldPassword = null;
    this.newPassword = null;
    return this;
}

...

function changePassword() {

    var changePassReq; // instance of a 'ChangePasswordRequest' object

    // acquire handle to 'requestInfo' passed from client application to populate 'changePassReq'

    ...

    // return a confirmation message or copy of 'changePassReq' to client application

}

...

exports.changePassword = changePassword;
服务器扩展JS代码:

    ...

    function ChangePassInfo() {
        this.userName = null;
        this.currentPassword = null;
        this.newPassword = null;
        return this;
    }

    ...

    function changePassword() {
        var uname = ff.loggedInUser().userName;
        var oldPass = $("#input-curr-pass").val();
        var newPass = $("#input-new-pass").val();

        var requestInfo = new ChangePassInfo();
        requestInfo.userName = uname;
        requestInfo.currentPassword = oldPass;
        requestInfo.newPassword = newPass;

        // pass 'requestInfo' to 'ChangePassword' extension
        // acquire handle to confirmation object/message returned from 'ChangePassword'

        ...

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

...

function ChangePasswordRequest() {
    this.clazz = 'ChangePasswordRequest';
    this.createdBy = 'system';
    this.userName = null;
    this.oldPassword = null;
    this.newPassword = null;
    return this;
}

...

function changePassword() {

    var changePassReq; // instance of a 'ChangePasswordRequest' object

    // acquire handle to 'requestInfo' passed from client application to populate 'changePassReq'

    ...

    // return a confirmation message or copy of 'changePassReq' to client application

}

...

exports.changePassword = changePassword;

评论部分是我希望解决的问题领域。一旦这些问题得到解决,我应该能够完成其余的实现。谢谢

让我们从后端开始。假设一个对象已发布到扩展,下面是如何在函数中检索它:

var ff = require('ffef/FatFractal');     // FatFractal module
var data = ff.getExtensionRequestData(); // Get request data
var member = data.httpContent.member     // Get 'obj' member of passed object
好的,现在你已经做了一些事情,想要归还一些东西,下面是你如何做到的:

var r = ff.response();  // Get response object, and populate
r.result = { member: "Something", otherMember: false, yaMember: 42 };
r.responseCode = "200";
r.statusMessage = "This message is useful";
r.mimeType = "application/json";
最后,到客户端。以下是如何将对象发布到扩展:

var ff = new FatFractal();

// ...

ff.postObjToExtension({ member: "derp" }, "/yourExtension", ... );
希望事情澄清