2014-07-01 3 views
0

Мне было интересно, если кто-то использовал ext-direct с sailsjs. Если у вас есть или кто-нибудь, кто знает, как вы можете направить меня.sailsjs + ext-direct (sencha extjs)

спасибо.

Вот некоторые примеры

В обычных nodejs/экспресс-приложение, я бы нормально сделать это в моих 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

Редактировать: Спасибо @ Скотт Гресс. Просмотрев мой код, не нужно было передавать объект db (да, это промежуточное программное обеспечение), поскольку он уже привязан к объекту запроса. Спасибо.

спасибо.

+0

Я не понимаю, что делает объект 'db'. Не все аргументы для 'app.post', кроме первых, рассматриваются как обратные вызовы? – sgress454

+0

Благодарим вас за интерес. Мое приложение должно подключаться к нескольким базам данных во время выполнения (приложение multi tenant (подключается к базе данных клиентов после поиска, кто клиент из другой базы данных)). Таким образом, объект db является подключением клиентов db. Это единственный способ узнать, как подключиться и передать клиентское соединение db во время выполнения. – mojotaker

+0

Если 'db' не является функцией, я все равно не понимаю, что он делает или где вы« передаете »это; третий аргумент вашего 'app.post' является регулярным обратным вызовом и вообще не может использовать' db'. Является ли 'db' функцией промежуточного программного обеспечения, как то, что вы описали в своем вопросе, который обрабатывает фактическое соединение db? – sgress454

ответ

1

Самый простой способ сделать это - использовать конфигурацию customMiddleware для Sails. Эта опция позволяет вам предоставить функцию, которая получит основное приложение Express в качестве единственного аргумента, к которому вы можете добавить свои собственные маршруты или промежуточное программное обеспечение. Найти или создать свой конфигурации/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. Документация для пользовательских крючков находится в разработке here.

Смежные вопросы