Прототип Mongoose: как динамически вставить URL-адрес?

Я пытаюсь создать прототип для схемы мангуста. База данных содержит строку со списком изображений.

Пример :

{ "_id": ObjectId("55814a9799677ba44e7826d1"), "album": "album1", "pictures": [ "1434536659272.jpg", "1434536656464.jpg", "1434535467767.jpg" ], "__v": 0 } 

Было бы замечательно знать, как я могу ввести URL-адрес для каждого изображения, например, прототип, и как после того, как я смогу получить все данные из коллекции (с картинками и URL-адресами) в формате JSOn (для API).

Я тестировал много разных подходов, но он не работает.

 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var PicturesSchema = new Schema({ album: { type: String, required: true, trim: true }, pictures: { type: Array, required: false, trim: true } }); var Pictures = mongoose.model('Pictures', PicturesSchema); // Not working Pictures.prototype.getPics = function(){ return 'https://s3.amazonaws.com/xxxxx/'+ this.pictures; } module.exports = Pictures; 

Как я могу ввести «виртуальный» URL для каждого изображения (я не хочу хранить URL-адрес в БД)?

Вот пример использования метода экземпляра :

 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var PicturesSchema = new Schema({ album : { type : String, required : true, trim : true }, pictures : { type : Array, required : false, trim : true } }); // Make sure this is declared before declaring the model itself. PicturesSchema.methods.getPics = function() { // `this` is the document; because `this.pictures` is an array, // we use Array.prototype.map() to map each picture to an URL. return this.pictures.map(function(picture) { return 'https://s3.amazonaws.com/xxxxx/'+ picture; }); }; var Pictures = mongoose.model('Pictures', PicturesSchema); // Demo: var pictures = new Pictures({ album : 'album1', pictures : [ '1434536659272.jpg', '1434536656464.jpg', '1434535467767.jpg' ] }); console.log( pictures.getPics() ); 

Если вы хотите, чтобы URL-адрес был частью объекта документа (например, для использования в качестве ответа JSON), вместо этого используйте «виртуальный» :

 ... PicturesSchema.virtual('pictureUrls').get(function() { return this.pictures.map(function(picture) { return 'https://s3.amazonaws.com/xxxxx/'+ picture; }); }); ... // Demo: console.log('%j', pictures.toJSON({ virtuals : true }) );