1

コレクションではなく、単一のアイテムであるリソースが必要です。そのようにマングースサービスをカスタマイズすることについては何もわかりません。

4

1 に答える 1

2

メソッドから何でも返すことができますfind。コレクションである必要はありません。たとえば、次のようなオブジェクトを取得するには、次の/singletonようにします。

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

もちろん、これは websocket 経由でも機能しsocket.emit('singleton::find')ます。Mongoose サービスには、次の 2 つのオプションがあります。

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;
    }
  }
});
于 2015-07-29T06:20:37.550 に答える