Nadal możesz używać populate() z _id wartości typów poza ObjectID, ale musisz użyć tego samego typu w definicji odniesienia.
Więc Twój trackPassSchema musiałby zmienić na:
var trackPassSchema = new Schema({
_id: { type: String, default: function genUUID() {
return uuid.v1()
}},
vehicle: [
{type: String, required: true, ref: 'Vehicle'}
]
});
Jak zauważa Adam w komentarzach, możesz uprościć swój default wartość do:
var trackPassSchema = new Schema({
_id: { type: String, default: uuid.v1 },
vehicle: [
{type: String, required: true, ref: 'Vehicle'}
]
});