Mangouste Remplir ne fonctionne pas
Bonjour, j'ai ce Schéma(appelé schema.js):
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var RoomSchema = new Schema({
name: { type: String, required: true, index: { unique: true } },
people: { type: Number, required: true },
childrens: {type: Number, required: true},
total: {type: Number, required: true}
});
var Room = mongoose.model('Room', RoomSchema);
var AvSchema = new Schema({
roomId: {type: Schema.Types.ObjectId, ref: 'Room'},
people: { type: Number, required: true },
childrens: {type: Number, required: true},
total: {type: Number, required: true}
});
var Av = mongoose.model('Av', AvSchema);
module.exports = {
Room: Room,
Av: Av
};
dans mon fichier de Route :
module.exports = function(app) {
var model = require('../models/Schema');
app.get('/api/rooms', function(req, res) {
model.Room.find(function(err, rooms) {
if (err)
res.send(err);
res.json(rooms);
});
});
app.get('/api/av', function(req, res) {
model.Av.find().populate('roomId').exec(function(err, av) {
if (err)
res.send(err);
res.json(av);
});
});
};
Un pic de la db :
GET /api/chambres - réponse:
[{
"_id": "5444d0dd9a31437167eea816",
"name": "Single",
"people": 1,
"childrens": 1,
"total": 4
}, {
"_id": "5444d1009a31437167eea817",
"name": "Double",
"people": 2,
"childrens": 2,
"total": 10
}]
Quand je l'appelle api/chambres a l'air bien mais quand je l'appelle api/av j'ai un tableau vide [] .... Toute idée de ce que je fais de mal? Je dois mentionner que j'ai enregistrements insérés dans av de la collection pour les deux roomsID
Vous en remercie d'avance.
- thakns pour cette question
Vous devez vous connecter pour publier un commentaire.
Par défaut, la Mangouste pluralizes le nom du modèle pour trouver le nom de la collection, de sorte Mangouste est à la recherche de la
avs
de la collection au lieu deav
.Vous pouvez définir explicitement le nom de la collection en passant que comme troisième paramètre de
model
:Car c'est la plus populaire de résultats pour la requête
Je vais inclure la raison pour laquelle il ne fonctionnait pas pour moi, même si ce n'est pas une réponse directe à cette déjà résolu la question, dans l'espoir que cela aidera quelqu'un
Le problème pour moi est que j'avais des champs spécifiés dans
select({..}
mais pas le domaine que j'essayais de remplir.Similaire à CodyBugstein réponse, je poste pourquoi elle n'avait pas de travail dans mon cas, même si c'est pas le même cas que OP.
J'ai essayé de remplir le "pro" dans le champ de mon schéma dans un
.post('save')
crochet, de la manière suivante:Cependant, la 2ème
console.log
a également été la journalisation de l'ObjectID au lieu de la doc.Après avoir lutté avec pendant une bonne heure et de tenter des approches différentes, j'ai découvert que j'avais à faire était d'utiliser des promesses et appel
execPopulate()
de sorte qu'il est revenu à part entière de la promesse. J'ai utiliséasync/await
mais vous pouvez utiliser.then
trop:De cette façon, le 2ème
console.log
n'journal de l'ensemble du pro doc comme prévu 🙂N'oubliez pas d'ajouter la ref de propriété pour le schéma de la propriété que vous essayez de remplir. E. g.
Voir Mangouste Remplir