Ich erstelle derzeit eine Web-App in Meteor. Diese App verwendet MongoDb und wenn sie Anfragen vom Client macht, verwendet sie Minimongo, um mit dem zugrunde liegenden MongoDb zu interagieren.Bessere Möglichkeit, Daten aus mehreren Mongo-Sammlungen mit minimongo zu bekommen
Ich habe 2 Sammlungen definiert unter
const chats = {
userIds: [],
//other data irrelevant to question
};
const users = {
userId: string,
username: string
//other data irrelevant to question
};
Also im Grunde, die Chat-Sammlung des eindeutigen Benutzer-IDs für alle Nutzer im Chat enthält und die Benutzer-Sammlung enthält alle Benutzer im System. Ich versuche, alle Benutzernamen der Benutzer in einem einzelnen Chat-Dokument abzufragen.
Derzeit bin zu erreichen ich dies durch erste Abfrage für alle Benutzer-IDs in einem Chat, dann mit Hilfe von Javascript über diese Benutzer-IDs wiederholen ihre entsprechenden Benutzernamen wie so zu finden:
var thisChat = Chats.findOne(this.chatId); //get current chat document
var userList = thisChat.userIds; //get list of user id's from this chat
this.newUserList = [];
for(var i = 0; i < userList.length; i++) { //iterate over user id's
var tempUser = Meteor.users.find({_id: userList[i]}).fetch(); //find username for this userId
this.newUserList.push(tempUser[0]); //add this username to an array
}
});
});
return this.newUserList; //return list of usernames
Diese Methode ist ziemlich hässlich, also frage ich mich, ob es einen saubereren Weg gibt, dies mit minimongo zu tun (eine Art Join-Äquivalent?). Ich habe mir andere Beiträge angeschaut, die Population oder Aggregation verwendet haben, aber diese sind nicht in Minimongo verfügbar.