应用¶
$ npm install @feathersjs/feathers --save
核心 @feathersjs/feathers 模块提供了初始化新Feathers应用程序实例的功能.它适用于Node, React Native和浏览器(有关更多信息, 请参阅 Feathers 客户端 一章).每个实例都允许注册和检索 钩子, 插件配置以及获取和设置配置选项.初始化的Feathers应用程序称为 app对象.
const feathers = require('@feathersjs/feathers');
const app = feathers();
.use(path, service)¶
服务 on a given path.
// Add a service.
app.use('/messages', {
get(id) {
return Promise.resolve({
id,
text: `This is the ${id} message!`
});
}
});
注解
path 可以是 / 在根级别注册服务.
.service(path)¶
给定路径的 服务. Feathers在内部从每个注册的服务创建一个新对象.这意味着 app.service(path) 返回的对象将提供与原始服务对象相同的方法和功能, 但也提供Feathers及其插件添加的功能, 如 事件 和 Feathers功能. path 可以是带或不带前导和斜杠的服务名称.
const messageService = app.service('messages');
messageService.get('test').then(message => console.log(message));
app.use('/my/todos', {
create(data) {
return Promise.resolve(data);
}
});
const todoService = app.service('my/todos');
// todoService is an event emitter
todoService.on('created', todo =>
console.log('Created todo', todo)
);
.publish([event, ] publisher)¶
app.publish([event, ] publisher) - > app 注册一个全局事件发布者.有关更多信息, 请参阅 出版 一章.
.configure(callback)¶
app.configure(callback) - > app 运行一个 callback 函数, 它传递了应用程序对象.它用于初始化插件或服务.
function setupService(app) {
app.use('/todos', todoService);
}
app.configure(setupService);
.listen(port)¶
app.listen([port]) - > HTTPServer 在给定端口上启动应用程序.它将设置所有已配置的传输(如果有), 然后使用服务器对象运行 app.setup(server) (见下文), 然后返回服务器对象.
只有配置了服务器端传输(REST, Socket.io或Primus)时, listen 才可用.
.setup([server])¶
app.setup([server]) - > app 用于通过调用each services #setupapp-path 方法(如果可用)来初始化所有服务.它还将使用传递的``server``实例(例如通过 http.createServer)来设置SocketIO(如果已启用)以及可能需要服务器实例的任何其他提供程序.
通常``app.setup`` 将在通过 app.listen([port]) 启动应用程序时自动调用, 但有时需要显式调用它.
.set(name, value)¶
app.set(name, value) -> app 将 name 设置为 value.
.get(name)¶
app.get(name) -> value 检索设置 name. 有关服务器端Express设置的更多信息, 请参阅 Express文档.
app.set('port', 3030);
app.listen(app.get('port'));
.on(eventname, listener)¶
由核心 NodeJS EventEmitter .on 提供.为给定的 eventname 注册一个 listener 方法(function(data){}).
app.on('login', user => console.log('Logged in', user));
.emit(eventname, data)¶
核心 NodeJS EventEmitter .emit 提供.将事件 eventname 发送给所有事件侦听器.
app.emit('myevent', {
message: 'Something happened'
});
app.on('myevent', data => console.log('myevent happened', data));
.removeListener(eventname, [ listener ])¶
核心 NodeJS EventEmitter.removeListener 提供.删除 eventname 的全部或给定侦听器.
.mixins¶
app.mixins 包含服务混合列表. mixin是一个回调((service, path)=> {}), 它为每个正在注册的服务运行.添加自己的mixins允许为每个注册的服务添加功能.
const feathers = require('@feathersjs/feathers');
const app = feathers();
// Mixins have to be added before registering any services
app.mixins.push((service, path) => {
service.sayHello = function() {
return `Hello from service at '${path}'`;
}
});
app.use('/todos', {
get(id) {
return Promise.resolve({ id });
}
});
app.service('todos').sayHello();
// -> Hello from service at 'todos'
.services¶
服务 由他们通过 app.use(path, service) 注册的路径键入.这允许返回所有可用服务名称的列表:
const servicePaths = Object.keys(app.services);
servicePaths.forEach(path => {
const service = app.service(path);
console.log(path, service);
});
注解
要检索服务, 应该使用 app.service(path) 方法(而不是直接使用 app.services.path).
Feathers Feathers 客户端 对它所连接的服务器一无所知.这意味着 app.services 将 不会 自动包含服务器上可用的所有服务.相反, 服务器必须提供其服务列表, 例如, 通过 服务.
app.use('/info', {
async find() {
return {
services: Object.keys(app.services)
}
}
});
.defaultService¶
app.defaultService 可以是一个函数, 如果还没有注册的那个, 则为 app.service(path) 返回一个新标准服务的实例.
const memory = require('feathers-memory');
// For every `path` that doesn't have a service automatically return a new in-memory service
app.defaultService = function(path) {
return memory();
}
这由 Feathers 客户端 用于自动注册与Feathers服务器通信的客户端服务.


