我有一个非常基本的羽毛服务,该服务使用羽毛-猫鼬包将数据存储在猫鼬中。问题在于获取功能。我的模型如下:
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
我有以下要求
这实质上是尝试将测试转换为ObjectID。我会怎么做
这样做是针对message属性运行查询
{message:“ test”},我不确定该如何实现。有
没有足够的文档来理解编写或更改此文档
在钩子上。有人可以帮忙吗
当找不到行或与我的某些条件不匹配时,我想返回自定义错误代码(http)。我怎样才能做到这一点?
谢谢
最佳答案
在Feathers 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中记录了如何创建自定义错误和设置错误代码。