sailsjs + ext-direct(sencha extjs)

时间:2014-07-01 21:55:53

标签: javascript node.js extjs sails.js

我想知道是否有人使用了与sailsjs的ext-direct。如果您有或任何知道如何的人,请指导我。

谢谢。

以下是一些例子

在常规nodejs / express应用程序中,我会在我的app.js文件中正常执行此操作

app.get(ExtDirectConfig.apiPath, function (request, response) {
    try {
        var api = extdirect.getAPI(ExtDirectConfig);
        response.writeHead(200, {'Content-Type': 'application/json'});
        response.end(api);
    } catch (e) {
        console.log(e);
    }
});

// Ignoring any GET requests on class path
app.get(ExtDirectConfig.classPath, function (request, response) {
    response.writeHead(200, {'Content-Type': 'application/json'});
    response.end(JSON.stringify({success: false, msg: 'Unsupported method. Use POST      instead.'}));
});

// POST Request process route and calls class
app.post(ExtDirectConfig.classPath, db, function (request, response) {
    extdirect.processRoute(request, response, ExtDirectConfig);
});

我将如何在sails.js中执行此操作

编辑:谢谢@Scott Gress。查看我的代码之后,没有必要传递db对象(是的,它是一个中间件),因为它已经将自己附加到请求对象。谢谢。

谢谢。

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用Sails的customMiddleware配置选项。此选项允许您提供一个函数,该函数将接收底层Express应用程序作为其唯一参数,您可以向其添加自己的路由或中间件。查找或创建 config / express.js 文件,并输入以下内容:

// First, do all requires / setup necessary so that 
// `extdirect` and `ExtDirectConfig` exist, then:
module.exports.express = {

    customMiddleware: function(app) {

        app.get(ExtDirectConfig.apiPath, function (request, response) {
            try {
                var api = extdirect.getAPI(ExtDirectConfig);
                response.writeHead(200, {'Content-Type': 'application/json'});
                response.end(api);
            } catch (e) {
                console.log(e);
            }
        });

        // Ignoring any GET requests on class path
        app.get(ExtDirectConfig.classPath, function (request, response) {
            response.writeHead(200, {'Content-Type': 'application/json'});
            response.end(JSON.stringify({success: false, msg: 'Unsupported method. Use POST      instead.'}));
        });

        // POST Request process route and calls class
        app.post(ExtDirectConfig.classPath, db, function (request, response) {
            extdirect.processRoute(request, response, ExtDirectConfig);
        });

    }
}

更复杂但最终可重用的策略是为ExtDirect创建自定义“钩子”或Sails插件。自定义挂钩的文档正在开发中here