如何在nodejs中的服务之间共享数据
How to share data among services in nodejs
我创建了两个服务 classes。下面是 ShellService class 定义。
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;
};
在其创建方法中,它创建了一个 shell 实例并将其添加到其 shells 数组对象中。我有另一个休息服务 class 并想访问 shells 数组对象。我怎样才能做到这一点?我在下面试过但没有用:
const shellService = require('../shell-service')
class SocketService {
...
我声明了 SocketService
class 并需要 shell 服务。但是我无法在我的 SocketService
class 中调用 shellService.XXXX
。我应该怎么做才能实现这一目标?
因为您已经在 this.shells[id]
中存储了 shell 引用,您可能想要实现一个 .find
service method returns 所有可用的列表shells:
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 => )
。
我创建了两个服务 classes。下面是 ShellService class 定义。
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;
};
在其创建方法中,它创建了一个 shell 实例并将其添加到其 shells 数组对象中。我有另一个休息服务 class 并想访问 shells 数组对象。我怎样才能做到这一点?我在下面试过但没有用:
const shellService = require('../shell-service')
class SocketService {
...
我声明了 SocketService
class 并需要 shell 服务。但是我无法在我的 SocketService
class 中调用 shellService.XXXX
。我应该怎么做才能实现这一目标?
因为您已经在 this.shells[id]
中存储了 shell 引用,您可能想要实现一个 .find
service method returns 所有可用的列表shells:
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 => )
。