• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zwrot JSONa z MongoDB

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
528 wizyt
pytanie zadane 20 stycznia 2018 w JavaScript przez Anoonymous Obywatel (1,560 p.)

Witam, mam takiego jsona:

{
    "name": "xxx",
    "password": "xxx",
    "birth": xxx,
    "entry": [
        {
            "title": "xxx",
            "img": "xxx",
            "info": "xxx",
            "link": "xxx"
        },
...
    ]
}

Chciałbym za pomocą mongoose zwrócić taki wynik tylko danych z entry bez jego nazwy tzn:

        {
            "title": "xxx",
            "img": "xxx",
            "info": "xxx",
            "link": "xxx"
        },
        {
            "title": "xxx",
            "img": "xxx",
            "info": "xxx",
            "link": "xxx"
        }

Jak mogę uzyskać owy efekt? Jedynie co mi się udaje to dostać owy zwrot wraz z "przedrostkiem" entry: jednak chciałbym go uniknąć.

1 odpowiedź

+1 głos
odpowiedź 20 stycznia 2018 przez Ivan Maniak (60,650 p.)
wybrane 21 stycznia 2018 przez Anoonymous
 
Najlepsza
const fooo = Foo.find( {} ).select( 'entry' ).exec();

W select podajesz jakie pola mają być wyciągnięte.

komentarz 21 stycznia 2018 przez Anoonymous Obywatel (1,560 p.)
foos.map is not a function
1
komentarz 21 stycznia 2018 przez Ivan Maniak (60,650 p.)
Pokaż swój kod.
komentarz 21 stycznia 2018 przez Anoonymous Obywatel (1,560 p.)
...
mongoose.connect('mongodb://123:123@123/123');
var Schema = mongoose.Schema;

var userDataSchema = new Schema({
  name: String,
  password: { type: String, select: false},
  birth: Number,
  entry: [{
    title: {type: String},
    img: {type: String},
    info: {type: String},
    link: {type: String}
  }]
}, {collection: 'zxcv'});

var UserData = mongoose.model('UserData', userDataSchema);

app.get('/entry/:user', async (req, res) => {
  const foos = await UserData.findOne({'name': req.params.user})
    .select('entry')
    .exec();

  const data = foos.map( el => el.entry );
  res.json(data[0]);
});

 

1
komentarz 21 stycznia 2018 przez Ivan Maniak (60,650 p.)

findOne zwraca jeden document/collection. Zamień findOne na find.

komentarz 21 stycznia 2018 przez Anoonymous Obywatel (1,560 p.)
eh... faktycznie logiczne, a siedzę nad tym już dobrą godzinę :)

Dzięki raz jeszcze!

Podobne pytania

0 głosów
0 odpowiedzi 415 wizyt
pytanie zadane 22 stycznia 2018 w JavaScript przez Anoonymous Obywatel (1,560 p.)
+1 głos
0 odpowiedzi 366 wizyt
pytanie zadane 24 czerwca 2016 w JavaScript przez ShiroUmizake Nałogowiec (46,300 p.)
0 głosów
1 odpowiedź 515 wizyt
pytanie zadane 9 czerwca 2018 w JavaScript przez Mebya Użytkownik (700 p.)

93,433 zapytań

142,429 odpowiedzi

322,661 komentarzy

62,796 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...