Vous pouvez toujours utiliser populate() avec _id des valeurs de types autres que ObjectID, mais vous devez utiliser le même type dans la définition de référence.
Donc, votre trackPassSchema devrait être remplacé par :
var trackPassSchema = new Schema({
_id: { type: String, default: function genUUID() {
return uuid.v1()
}},
vehicle: [
{type: String, required: true, ref: 'Vehicle'}
]
});
Comme Adam le note dans les commentaires, vous pourriez simplifier votre default valeur à :
var trackPassSchema = new Schema({
_id: { type: String, default: uuid.v1 },
vehicle: [
{type: String, required: true, ref: 'Vehicle'}
]
});