Je travaille avec Node.js pour créer un serveur socket Web qui utilise mongodb. J'utilise node-mongodb-native comme bibliothèque pour accéder à mongo db.Document Mongo JSON -> JSON -> BSON
Quand j'appelle console.log (sys.inspect (point)) sur un objet de la db je reçois quelque chose qui ressemble à ceci:
{ _id: { id: 'L?#&\u008e\u00ad\u000e\u008f\u0014\u0005\u0000\u0000' }
, y: 3
, favorite_color: 'orange'
, x: 14766
}
donc je devine que l'id est l'ID d'objet BSON que mongo utilise.
Je dois envoyer cet objet au navigateur Web du client à l'aide de JSON, lui demander de faire quelque chose, puis le renvoyer au serveur.
Quand je JSON.stringify (point), je reçois quelque chose qui ressemble à ceci:
{"_id":"4c3f23268ead0e8f14050000","y":3,"favorite_color":"orange","x":14766}
Ainsi, l'identifiant a été transformé en une chaîne encodée hexagonale. Si je l'envoie au client, et que le client le renvoie, j'ai maintenant besoin de le mettre à jour dans la base de données. Je lance JSON.parse (point) pour obtenir qu'il soit un objet normal, mais il semble encore comme ceci:
{ _id: '4c3f23268ead0e8f14050000'
, y: 3
, favorite_color: 'orange'
, x: 14766
}
et que _id ne peut pas être utilisé pour rechercher dans MongoDB.
Comment puis-je le convertir dans un format qui pourra être utilisé pour les recherches sur mongo?
--update--
Il est intéressant que je peux utiliser findOne({_id:item._id}, collection)
pour obtenir le document, mais si je fais ceci:
findOne({_id:{id : item._id.id}}, collection)
Je ne reçois pas de résultat. Je suppose qu'il y a quelque chose de spécial à propos de l'objet mongo _id.
deux {_id:item._id}
et {_id:{id : item._id.id}}
quand jeté sur ressembler à ceci:
{ _id: { id: 'L?#&\u008e\u00ad\u000e\u008f\u0014\u0005\u0000\u0000' } }
mise à jour --Another RÉSOLU ---
Il y avait une certaine manipulation de l'ID d'objet dans un fichier de test d'intégration.
objectId = nouveau mongo.ObjectID.createFromHexString ('47cc67093475061e3d95369d'); donnera le _id que je cherche.
objectId.toHexString() retourne la chaîne hexagonale qui ressemble à « 47cc67093475061e3d95369d »
Ainsi, votre problème est résolu je suppose? – Aillyn
Non, le vrai problème est que j'ai besoin d'une forme de l'identifiant mongo que je peux envoyer au navigateur client (de préférence en json) que le client peut ensuite renvoyer et qui peut être utilisé pour rechercher l'objet dans mongodb. – RobKohr