我正在尝试创建一个可以通过 slug 或 id 查询的 mongoose 查询,但是问题在于我不知道要处理哪一个,因为我将其作为 Express 路由:
app.get('/animals/dogs/:id', function (req, res, next) {
Dogs.find({$or: [{slug: id}, {_id: id}]}, function (err, docs) {
if (err) {
return next(err);
}
// ....
});
});
我希望能够通过其中任何一个进行搜索,但是上面的这种方法会引发Invalid ObjectId
错误。
另一种方法是嵌套查询,但这感觉有点麻烦:
app.get('/animals/dogs/:id', function (req, res, next) {
Dogs.find({slug: id}, function (err, docs) {
if (err) {
return next(err);
}
if (!docs) {
Dogs.findById(id, function (err, docs) {
// ...
});
}
// ....
});
});
还有其他我没有考虑过的方法吗?我知道我可以将我的 slug 变成 ObjectId,但如果可能的话,我宁愿避免这种情况。