Ich versuche, eine Mongoose-Abfrage zu erstellen, die entweder durch Slug oder id abfragen kann, aber das Problem kommt in, dass ich nicht weiß, welche ich gehen, um zu behandeln, wie ich dies als eine Express-Route haben:
app.get('/animals/dogs/:id', function (req, res, next) {
Dogs.find({$or: [{slug: id}, {_id: id}]}, function (err, docs) {
if (err) {
return next(err);
}
// ....
});
});
Ich würde gerne die Möglichkeit haben, nach beidem zu suchen, aber der obige Ansatz wirft ein Invalid ObjectId
Fehler.
Ein anderer Ansatz wäre die Verschachtelung der Abfragen, was jedoch etwas umständlich ist:
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) {
// ...
});
}
// ....
});
});
Gibt es einen anderen Ansatz, den ich nicht berücksichtigt habe? Ich weiß, dass ich meinen Slug in die ObjectId umwandeln könnte, aber ich würde dies lieber vermeiden, wenn möglich.