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

Zwrot JSONa z MongoDB

Hosting forpsi easy 1 pln
0 głosów
179 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 322 wizyt
pytanie zadane 22 stycznia 2018 w JavaScript przez Anoonymous Obywatel (1,560 p.)
+1 głos
0 odpowiedzi 326 wizyt
pytanie zadane 24 czerwca 2016 w JavaScript przez ShiroUmizake Nałogowiec (46,300 p.)
0 głosów
1 odpowiedź 363 wizyt
pytanie zadane 9 czerwca 2018 w JavaScript przez Mebya Użytkownik (700 p.)

92,087 zapytań

140,745 odpowiedzi

317,709 komentarzy

61,408 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia w koszyku, uzyskując rabat aż -50% (jeszcze tylko dziś 30.11 z okazji Black Week, a potem będzie to 30%) na bilety w wersji "Standard"! Więcej informacji na temat akademii znajdziecie tutaj. Dziękujemy Sekurakowi za tak fajną zniżkę dla 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 15% 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!

...