Désolé si cela a déjà été demandé (j'ai cherché, honnêtement).Application de getters sur une requête "find" dans Mongoose?
Fondamentalement, j'ai un schéma simple:
var ProductSchema = new Schema({
name: {type: String},
image: {type: String, get: getImageUrl},
stock: {type: Number},
price: {type: Number},
description: String
});
où
var getImageUrl = function(imgUrl) {
if (imgUrl.indexOf('http://') !== 0) {
return 'http://' + os.hostname() + (app.port ? app.port : '') + '/public/' + imgUrl;
} else {
return imgUrl;
}
};
Le getter lui-même fonctionne, si je récupère un élément spécifique de la base de données, mais pas lorsque je tente d'utiliser Product.find()
ou d'autres requêtes, le getter ne s'applique pas et j'obtiens la propriété "brute" (non traitée). J'ai essayé d'utiliser Product.find({}, [], {getters: true}
en vain. Est-ce que je manque quelque chose?
EDIT - en utilisant la version mongod 1.8.5 et 2.5.10 mangouste
Dans mon code, la fonction est définie au-dessus du schéma, mais toujours aucun dé. J'ai temporairement résolu mes problèmes avec un docs.map qui appelle doc.toObject ({getters: true}), mais ça me dérange toujours. – Cronco