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

Zwrot JSONa z MongoDB

Object Storage Arubacloud
0 głosów
233 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 344 wizyt
pytanie zadane 22 stycznia 2018 w JavaScript przez Anoonymous Obywatel (1,560 p.)
+1 głos
0 odpowiedzi 332 wizyt
pytanie zadane 24 czerwca 2016 w JavaScript przez ShiroUmizake Nałogowiec (46,300 p.)
0 głosów
1 odpowiedź 369 wizyt
pytanie zadane 9 czerwca 2018 w JavaScript przez Mebya Użytkownik (700 p.)

92,551 zapytań

141,397 odpowiedzi

319,529 komentarzy

61,936 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...