在Mongoose中,可以通过自定义中间件来实现在未找到结果时返回自定义消息而不是空数组。以下是实现该功能的步骤:
handleEmptyResult
。const handleEmptyResult = function(req, res, next) {
if (res.locals.data.length === 0) {
res.status(404).json({ message: '未找到结果' });
} else {
next();
}
};
pre
方法将中间件添加到find
查询的中间件链中。const Model = require('mongoose').model('Model');
Model.find()
.pre('find', handleEmptyResult)
.exec(function(err, data) {
if (err) {
// 处理错误
} else {
// 处理查询结果
}
});
在上述代码中,handleEmptyResult
中间件函数会在执行find
查询之前被调用。如果查询结果为空,它将返回一个包含自定义消息的JSON响应,状态码为404。如果查询结果不为空,则会继续执行下一个中间件或查询操作。
这样,当使用Mongoose的find
查询时,如果未找到结果,将返回自定义消息而不是空数组。
请注意,以上代码示例中的Model
是一个Mongoose模型,你需要根据你的实际情况替换为你自己的模型名称。另外,你还可以根据需要自定义返回的消息内容和状态码。
推荐的腾讯云相关产品:腾讯云数据库MongoDB(TencentDB for MongoDB),它是腾讯云提供的一种高性能、可扩展的NoSQL数据库服务,适用于各种规模的应用程序。你可以通过以下链接了解更多信息:腾讯云数据库MongoDB产品介绍。
领取专属 10元无门槛券
手把手带您无忧上云