Strongloop - 使用 model.js 执行 PHP

Strongloop - Execute PHP with model.js

我正在尝试在环回模型中执行 PHP。访问 myapi:3000/api/Door/open 时,我希望它 运行 包含函数的 PHP 文件。

我将 /Door/open 添加为远程方法,它显示在 swagger.ui、api returns "message" 中:"createElement is not defined",即使包含 jquery。

这是我的 doors.js 显示的远程方法设置:

  module.exports = function(Door) {
  Door.open = function(id, cb) {
    var script = createElement('script');
    script.src = 'http://code.jquery.com/jquery-2.1.4.min.js';
    script.type = 'text/javascript';
    getElementsByTagName('head')[0].appendChild(script);
    $.ajax({
      url: "http://192.168.10.139/Facility/doorfunc_dynamic.php?dpip=192.168.10.249&doorid=3&func=unlock"
    }).done(function(data) {
      console.log(data);
    });
  };
  Door.remoteMethod(
    'open',
    { 
      description: 'Open a door by id',
      accepts: {args: 'id', type: 'number', name: 'id', description: 'Door id'},
      returns: {arg: 'open', type: 'string'},
      http: {path: '/open', verb: 'get'}       
    }
  );
};

有谁知道如何解决这个问题? 我尝试在客户端文件夹中添加一个静态页面,但它没有显示在 swagger.ui 资源管理器中。

如果只想执行http请求,可以使用request包。

var request = require('request');
module.exports = function(Door) {
    Door.open = function(id, cb) {
        request('http://192.168.10.139/Facility/doorfunc_dynamic.php?dpip=192.168.10.249&doorid=3&func=unlock', 
            function(error, response, body) {
                if (!error && response.statusCode == 200) {
                    console.log(body);
                }
        });
    };
    Door.remoteMethod(
        'open',
        { 
            description: 'Open a door by id',
            accepts: {args: 'id', type: 'number', name: 'id', description: 'Door id'},
            returns: {arg: 'open', type: 'string'},
            http: {path: '/open', verb: 'get'}       
        }
      );
    };

希望它能解决您的问题。