羽毛-猫鼬:通过羽毛-猫鼬中的自定义属性获取

时间:2019-08-07 22:27:04

标签: javascript feathersjs

我有一个非常基本的羽毛服务,该服务使用feathers-mongoose软件包将数据存储在mongoose中。问题在于获取功能。我的模型如下:

module.exports = function (app) {
  const mongooseClient = app.get('mongooseClient');
  const { Schema } = mongooseClient;
  const messages = new Schema({
    message: { type: String, required: true }
  }, {
    timestamps: true
  });

  return mongooseClient.model('messages', messages);
};

当用户运行GET命令时:

curl http://localhost:3030/messages/test

我有以下要求

  1. 这实际上是尝试将测试转换为ObjectID。我会怎么做 这样做是针对message属性运行查询 {message:“ test”},我不确定该如何实现。有 没有足够的文档来理解编写或更改此文档 在钩子上。有人可以帮忙吗
  2. 当未找到行或与我的某些条件不匹配时,我想返回自定义错误代码(http)。我怎样才能做到这一点?

谢谢

1 个答案:

答案 0 :(得分:1)

在羽毛before hook中,您可以设置context.result,在这种情况下,原始数据库调用将被跳过。所以流程是

  • get前的钩子中,尝试按名称查找消息
  • 如果存在,请将context.result设置为找到的内容
  • 否则,什么也不做,将通过id返回原始get

外观如下:

async context => {
  const messages = context.service.find({
    ...context.params,
    query: {
      $limit: 1,
      name: context.id
    }
  });

  if (messages.total > 0) {
    context.result = messages.data[0];
  }

  return context;
}

Errors API中介绍了如何创建自定义错误和设置错误代码。