如何用猫鼬在羽毛中创建单身资源?

时间:2015-07-28 09:00:16

标签: javascript feathersjs

我需要的资源不是集合而是单个项目。我没有看到以这种方式定制猫鼬服务的任何事情。

1 个答案:

答案 0 :(得分:2)

您可以从find方法返回任何内容,但不必是集合。所以要获得一个对象,例如/singleton您可以执行以下操作:

app.use('/singleton', {
  find: function(params) {
    return Promise.resolve({
      test: 'data'
    });
  }
});

这当然也可以通过websocket socket.emit('singleton::find')工作。对于Mongoose服务,有两种选择:

1)扩展

扩展服务,然后用一个像这样的对象来调用它:

const MongooseService = require('feathers-mongoose').Service;

class SingletonService extends MongooseService {
  find(params) {
    return super.find(params).then(data => data[0]);
  }
}

app.use('/singleton', new SingletonService({
  Model: Todo,
  name: 'todo'
}));

2)钩子

使用feathers-hooks可能更好,注册一个after钩子,从最初请求的集合中检索单件项目:

const hooks = require('feathers-hooks');

app.configure(hooks())
  .use('/singleton', mongooseService('todo', Todo));

app.service('singleton').hooks({
  after: {
    find(hook) {
      const firstItem = hook.result[0];
      hook.result = firstItem;
    }
  }
});