javascript - 如何用 Mongoose 在羽毛中创建单例资源?

标签 javascript feathersjs

我需要一个不是集合而是单个项目的资源。我看不到任何有关以这种方式自定义 mongoose 服务的内容。

最佳答案

您可以从您的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) Hook

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

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;
    }
  }
});

关于javascript - 如何用 Mongoose 在羽毛中创建单例资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31671746/

相关文章:

javascript - 如何仅存储特定用户的数据

javascript - Firebase onwrite 函数仅更改值一次

node.js - 如何使用 Hook Feathers 在字段表中添加计算?

javascript - Lodash 过滤嵌套对象

javascript - 点击元素外部返回 JS 错误

javascript - 如何为用户制定自定义路线?以及如何为其添加钩子(Hook)?

node.js - 请求数量有限的服务器端分页

javascript - FeathersJS - 如何取消错误 Hook

javascript - jQuery - 信用卡日期验证

javascript - Feathers.js API 中的用户权限