sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongoose-prototyp:hur infogar man en url dynamiskt?

Här är ett exempel med en instansmetod :

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() );

Om du vill att webbadresserna ska vara en del av dokumentobjektet (till exempel för att använda som JSON-svar), använd en "virtuell" istället:

...
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 }) );



  1. Hur visar jag base64-bilden i reager?

  2. Välj dokument som har ett särskilt nyckelvärdespar men som inte har något annat nyckelvärdespar

  3. Bästa praxis för att uppgradera Redis med Sentinels?

  4. Vad är en bra strategi för att gruppera liknande ord?