Bonjour,
J'ai du mal à comprendre quelque chose ou c'est buggé.
Commençons. Voici la documentation sur les DBRefs :
http://docs.mongodb.org/manual/reference/database-references/#dbrefs
Ils écrivent que la structure du document avec référence devrait être :
{
"_id" : ObjectId("5126bbf64aed4daf9e2ab771"),
// .. application fields
"creator" : {
"$ref" : "creators",
"$id" : ObjectId("5126bc054aed4daf9e2ab772"),
"$db" : "users"
}
}
Voyons maintenant cet exemple (exemple1) :
https://gist.github.com/hastebrot/1170907
Quand je lance ce code j'ai quelque chose comme ça :
Récit:
"title": "A man who cooked Nintendo",
"_creator": {
"$oid": "52e7dcea3d9cd59c13702e3d"
},
"_id": {
"$oid": "52e7dceb3d9cd59c13702e3e"
},
"fans": [],
"__v": 0
Gens:
"name": "Aaron",
"age": 100,
"_id": {
"$oid": "52e7dcea3d9cd59c13702e3d"
},
"stories": [],
"__v": 0
Dans notre équipe, nous avons une petite application écrite en Java qui utilise la bibliothèque pour MongoDB mais cette bibliothèque enregistre les données comme dans la documentation MongoDB :
....//other fields
"user": {
"$ref": "users",
"$id": {
"$oid": "52c6c497c08e6fcf37000001"
}
}
et je ne peux pas remplir les données car il semble que cela ne fonctionne que pour la mise en œuvre de la mangouste.
Corrigez-moi si je me trompe, mais pour moi, c'est comme si vous n'enregistriez pas DBRef comme décrit dans la documentation.
+1
Confronté au même problème avec une application php utilisant la doctrine mongodb odm. Actuellement, je ne peux pas utiliser ma base de données déjà existante avec mongoose car les objets mongodb DBRefs ne sont pas utilisés pour stocker des références.
Peut-être qu'un autre type de schéma (Schema.DBRef ?) devrait être ajouté ?
Cela chargerait le document avec les informations fournies.
Toujours aucune contribution d'un développeur Mongoose sur ce problème ? Il s'agit d'un problème récurrent qui revient sans cesse lorsque plusieurs pilotes écrivent et lisent dans la même base de données.
Le pilote Node prend en charge les DBRefs et je trouve étrange que Mongoose ne le prenne toujours pas en charge.
La prise en charge des DBRefs pour le peuplement n'est pas vraiment une priorité élevée car la documentation de MongoDB recommande de ne pas utiliser dbref . Vous pouvez toujours faire les requêtes vous-même.
Commentaire le plus utile
Toujours aucune contribution d'un développeur Mongoose sur ce problème ? Il s'agit d'un problème récurrent qui revient sans cesse lorsque plusieurs pilotes écrivent et lisent dans la même base de données.
Le pilote Node prend en charge les DBRefs et je trouve étrange que Mongoose ne le prenne toujours pas en charge.