Je n'arrive pas à faire en sorte que mongoose affiche le sous-document lors de l'exécution de find() alors qu'il s'affiche parfaitement bien dans le shell mongodb.
Le sous-document doit être intégré sur la base de mon schéma, et non référencé par l'ID objet, donc je ne devrais pas avoir à faire de la magie noire pour que mes données s'affichent.
const UserSchema = new mongoose.Schema({
username: String;
xp: Number;
//etc.
});
const RoomSchema = new mongoose.Schema({
timestamp: { type: Date, default: Date.now },
status: { type: String, enum: ["pending", "ongoing", "completed"]},
players: {
type: [{
points: { type: Number, default: 0 },
position: String,
user: UserSchema
}],
maxlength:2
}
});
Après avoir ajouté une nouvelle pièce avec :
let room = new Room(coreObj);
room.players.push({
points: 0,
position: 'blue',
user: userObj //where userObj is a result of running findById on User model
});
Il s'affiche bien dans le shell mongo, en exécutant db.rooms.find({}).pretty() je peux voir que le document complet a été ajouté. Cependant, lors de l'exécution sur le modèle mongoose :
Room.find({}).exec((err,rooms)=>{
console.log(rooms[0].toJSON());
});
Je ne vois pas le sous-document utilisateur, de plus je ne peux pas voir le champ utilisateur entièrement ! Quel semble être le problème ?
json enregistré à partir du modèle Mongoose :
{
"status": "pending",
"_id": "5cf5a25c050db208641a2076",
"timestamp": "2019-06-03T22:42:36.946Z",
"players": [
{
"points": 0,
"_id": "5cf5a25c050db208641a2077",
"position": "blue"
}
],
"__v": 0
}
json à partir du shell mongo :
{
"_id" : ObjectId("5cf5a25c050db208641a2076"),
"status" : "pending",
"timestamp" : ISODate("2019-06-03T22:42:36.946Z"),
"players" : [
{
"points" : 0,
"_id" : ObjectId("5cf5a25c050db208641a2077"),
"position" : "blue",
"user" : {
"xp" : 0,
"_id" : ObjectId("5cf2da91a45db837b8061270"),
"username" : "bogdan_zvonko",
"__v" : 0
}
}
],
"__v" : 0
}