Javascript 如何使用猫鼬在羽毛中创建单体资源?
我需要一个不是集合而是单个项目的资源。我看不到任何关于以这种方式定制mongoose服务的内容。您可以从Javascript 如何使用猫鼬在羽毛中创建单体资源?,javascript,feathersjs,Javascript,Feathersjs,我需要一个不是集合而是单个项目的资源。我看不到任何关于以这种方式定制mongoose服务的内容。您可以从find方法返回任何内容,它不必是集合。因此,要为例如/singleton获取对象,您可以执行以下操作: app.use('/singleton', { find: function(params) { return Promise.resolve({ test: 'data' }); } }); 当然,这也可以通过websocketsocket.emit
find
方法返回任何内容,它不必是集合。因此,要为例如/singleton
获取对象,您可以执行以下操作:
app.use('/singleton', {
find: function(params) {
return Promise.resolve({
test: 'data'
});
}
});
当然,这也可以通过websocketsocket.emit('singleton::find')
实现。对于猫鼬服务,有两种选择:
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) 钩子
可能更妙的是,在之后注册一个钩子,从最初请求的集合中检索单例项:
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;
}
}
});