2016-04-02 12 views
1

Ich bin immer so ein JSON zurück von meiner Mongoose Abfrage:Mungo - Rückkehr nur Inhalt eines Arrays, und nicht seinen Namen

[{ 
    "messages": [{ 
     "body": "this is the body", 
     "sender": "John", 
     "_id": "56ffbabb9a984f0804e8b3a0" 
    }, { 
     "body": "message body", 
     "sender": "Jake", 
     "_id": "56ffc60c68a75ab835a7e097" 
    }] 
}] 

Und ich möchte dieses erhalten (nur Inhalt eines Arrays, ohne seinen Namen):

[{ 
    "body": "this is the body", 
    "sender": "John", 
    "_id": "56ffbabb9a984f0804e8b3a0" 
}, { 
    "body": "message body", 
    "sender": "Jake", 
    "_id": "56ffc60c68a75ab835a7e097" 
}] 

Abfrage sieht nun wie folgt aus:

var query = Messages.find({_id: id}).select('-_id -__v'); 

query.exec(function(err, messages){ 
     if(err) 
     res.send(err); 

     res.json(messages); 
     }); 

Was soll ich hier ändern, um die gewünschte Ausgabe zu erhalten?

+1

Warum ist das so ein Problem? Sicher, Sie können '.aggregate()' verwenden, um die Daten vollständig zu transformieren (nur '.aggregate()' oder '.mapReduce()' machen das tatsächlich), aber warum sollte es ein Problem sein? Ändern Sie einfach die Antwort, die Sie erhalten. Und '.select ('-_ id + messages') ist viel direkter. –

Antwort

2

Versuchen:

// change .find to .findOne to get just the one record you want 
var query = Messages.findOne({_id: id}).select('-_id -__v'); 

query.exec(function(err, message){ 
     if(err) 
     res.send(err); 
     // return just the .messages collection within the selected message 
     res.json(message.messages); 
     }); 
+0

Lesen Sie den obigen Kommentar. "Projektion" (was '.select()' tut) kann dies nicht tun. Wer das wirklich weiß, weiß, dass das stimmt. Außerdem sagt das OP, dass sie es bereits getan haben. –

+3

Eigentlich ist dies eine gute Idee, aber es wäre gut zu beschreiben, was Sie geändert haben, um dies zu erreichen: 'find' in' findOne' ändern (wie Sie mit '_id' suchen) und dann' res.json aufrufen (message.messages) 'um nur das' messages' Array zurückzugeben. – JohnnyHK

+0

Danke Paul, JohnnyHK, es funktioniert jetzt! – randomuser1

Verwandte Themen