2016-04-09 12 views
2

node.js. ile yeni yapıyorum. Tek bir dinlenme API'sı yazıyorum ve gereksiz bilgileri açığa çıkarmadan verileri göstermenin doğru yolunun ne olduğunu bilmek istiyorum.Sunucudan istemciye veriler nasıl kaydedilir

Örneğimde bir "Etiket" şem var. Ve ben de firavun tarlalarını müşterime ifşa etmek istemiyorum. Kodum:

{ 
     "_id": "57083a5e725f3cf0242a2916", 
     "tagName": "Test", 
     "en_us": "Testing", 
     "__v": 0, 
     "lastUpdated": "2016-04-08T23:10:22.759Z" 
    } 

sadece ilgili alanları haritaya doğru yolu nedir:

apiRoutes.get('/tag', passport.authenticate('jwt', { 
    session: false 
}), (req, res) => { 
    Tag.find({}, (err, tags) => { 
     return res.json(tags); 
    }); 
}); 

Ama istemci

, ben "_ID" ve "__v" ortaya çıkarmak istemiyor musunuz?

cevap

2

Her zaman mongoose sanallarını kullanabilirsiniz.

Tag.find({}, (err, tags) => { 
    res.json(tags.map(tag => tag.public)); 
}); 
: bir sorgu yaparken

Tag 
    .virtual('public') 
    .get(function() { 
    return { 
     tagName: this.tagName, 
     en_us: this.en_us, 
     lastUpdated: this.lastUpdated 
    }; 
    }); 

Sonra, sadece oluşturduğunuz sanal kullanın: modelinde

, böyle bir şey kullanabilirsiniz: İşte bir örnek

1

bunu açıklıyor yapabilirsiniz find yönteminde boşluk bırakarak gerekli alanları ilan:

Tag.find({}, 'tagName en-us', (err, tags) => { 
    return res.json(tags); 
}); 

kontrol mongoose documenation.