0

我创建了两个服务类。下面是 ShellService 类定义。

class ShellService {

  create(data, params) {
    if (Array.isArray(data)) {
      return Promise.all(data.map(current => this.create(current)));
    }
    let hostname=params.query.hostname
    let port = params.query.port
    const id = _.uniqueId();

    this.shells[id] = spawn('mongo', ['--host', hostname, '--port', port]);

    return Promise.resolve({id});
  }
...
}
module.exports = function() {
  // Initialize our service with any options it requires
  let service =new ShellService()

  return service;
};

在它的 create 方法中,它创建一个 shell 实例并将其添加到它的 shells 数组对象中。我有另一个休息服务类,想访问 shells 数组对象。我怎样才能做到这一点?我在下面尝试但不工作:

const shellService = require('../shell-service')
class SocketService {
  ...

我声明SocketService了类并需要 shell 服务。但是我不能shellService.XXXXSocketService课堂上打电话。我应该怎么做才能实现这一目标?

4

1 回答 1

1

由于您已经在其中存储了 shell 引用,因此this.shells[id]您可能希望实现一个返回所有可用 shell 列表的.find 服务方法

class ShellService {
  find() {
    const shellProcesses = this.shells;
    const shells = Object.keys(shellProcesses).map(key => {
      const shell = shellProcesses[key];

      return {
        id: shell.pid
      }
    });

    return Promise.resolve(shells);
  }

  create(data, params) {
    if (Array.isArray(data)) {
      return Promise.all(data.map(current => this.create(current)));
    }
    let hostname=params.query.hostname
    let port = params.query.port
    const id = _.uniqueId();

    this.shells[id] = spawn('mongo', ['--host', hostname, '--port', port]);

    return Promise.resolve({id});
  }
}
module.exports = function() {
  // Initialize our service with any options it requires
  let service =new ShellService()

  return service;
};

一旦注册为 Feathers 服务,您就可以使用app.service('shells').find().then(shellInfo => ).

于 2016-12-20T17:32:44.723 回答