2017-10-04 3 views
0

Je ne suis pas un nouveau venu chez Meteor, mais je suis parti quelques semaines pour travailler sur d'autres projets.Collection.findOne ({_id: "stringidsdfdsfdsfds"}) renvoie undefined

Je travaille actuellement sur un projet Meteor utilisant React.

Quand je fais Collection.find({}).fetch() il retourne ceci:

[ 
    { 
     "_id": { "_str": "59d3b91d80f4f5eeb0162634" }, 
     "title": "My first Post", 
     "content": "This is the body of the pst" 
    } 
] 

La seule chose étrange est le champ _id. Mais, quand je fais Collection.findOne({_id: "59d3b91d80f4f5eeb0162634" }), il renvoie undefined.

Comment faire un .findOne() en utilisant la chaîne _id comme paramètre de requête?

Répondre

2

Qu'est-ce que vous voyez en tant que valeur de _id n'est pas un objet JSON, mais la représentation de chaîne de type de Mongo ObjectID, c'est pourquoi votre .findOne() ne parvient pas à le trouver.

Vous devez rechercher comme ceci:

const _id = new Meteor.Collection.ObjectID('59d3b91d80f4f5eeb0162634'); 
Collection.findOne({ _id }); // same as { _id: _id } 

Par défaut, Meteor uses STRING method of _id generation, il semble donc que ce document a été inséré dans la collection d'une autre manière.

+0

Salut, merci pour cela. Je l'ai effectivement inséré depuis la console 'meteor mongo'. – Kenshinman

+0

@Kenshinman Je vous recommande d'utiliser la console 'meteor shell' pour quelque chose comme ça. – Styx