2017-11-25 5 views
0

Ich habe Probleme, ein Dokument zu finden. Ich habe eine Sammlung "registosORS" mit dieser Struktur:Knoten Mongo - Dokument kann nicht gefunden werden

{ 
    "_id" : ObjectId("5a1959d75e0b410558e515be"), 
    "sessao" : "1", 
    "proprioResponsavel" : "on", 
    "outroResponsavel" : "", 
    "relacao" : "", 
    "valorIndividualmente" : "1", 
    "valorInterpessoal" : "1", 
    "valorSocialmente" : "1", 
    "valorGlobalmente" : "1", 
    "cliente_id" : "5a1407c8099ca208e48170a5", 
    "email" : "[email protected]", 
    "data" : 1511610839374 
} 

Und ich möchte ein Dokument durch den cliente_id Wert zu finden.

Alles funktioniert gut, aber wenn ich in die Sammlungsabfrage "registosORS" komme, ist das Ergebnis null.

ClientesDAO.prototype.insereDadosOrs = function(dadosORS, date, callback){ 
    this._connection.open(function(err,mongoClient){ 
     mongoClient.collection('clientes', function(err,collection){ 
      collection.findOne({email:dadosORS.email}).then(function(result){ 

        var cliente_id = result._id; 
        dadosORS.data = date; 
        mongoClient.collection('registosORS', function(err,collection)      { 
        collection.insert(dadosORS); 

        dadosSessao = { 
         cliente: cliente_id, 
         data: dadosORS.data, 
         numero : dadosORS.sessao 
        } 

ich hier glauben, ist das Problem:

mongoClient.collection('registosORS', function(err,collection){ 
         collection.findOne({cliente_id:client_id, data:dadosORS.data}).then(function(result){ 
         console.log(result); 

Das Ergebnis ist null. Wo versage ich?

+0

Ich glaube, die Werte von 'client_id' und' dadosORS.data' entsprechen nicht denen in Ihrer Sammlung gespeichert. Hast du diese Werte überprüft? – Azuloo

+0

Wenn ich eine console.log dieser Werte mache, bekomme ich: cilente_id = 5a1407c8099ca208e48170a5 und dadosORS.data = 1511724182264 (wird aktualisiert, da es ein neues Dokument der Sammlung ist), aber das Ergebnis der letzten Abfrage ist null – EFO

+0

Es ist verwirrend weil ich es auf meiner Seite überprüfe (mit anderen Daten natürlich) und es hat funktioniert. Haben Sie versucht, das Ergebnis nur mit 'cliente_id' zu überprüfen? – Azuloo

Antwort

0

Haben Sie das gelöst?

Was sollte dieser Teil ergeben? ist es eine Zeichenfolge von ObjectID?

var cliente_id = result._id; 

wenn es sollte die Zeichenfolge von objectID bekommen und wird verwendet für die Abfrage dann wird es nicht Ihre Kette von cliente_id entsprechen. Die Variable führt zu objectID. Es sollte zu JSON geparst werden und die objectID zuerst

var cliente_id = result._id.toJSON().$oid 

Nun, es ist nur meine Spekulation. Hoffe, es hilft

+0

Hallo Dundun, Es ist nicht gelöst und ich glaube, die Antwort hängt mit Ihrem Kommentar zusammen. Ich versuche zu debuggen, aber es gibt mir kein Protokoll ... soll ich sagen. $ Oid? Was tut es? – EFO

+0

Wenn ich das tue --- var cliente_id = result._id.toJSON(). $ Oid; --- es sagt, client_id ist undefined .. – EFO

+0

Ok, es funktionierte tun var cliente_id = result._id.toJSON(). Nur aus Neugier, lohnt es sich, den Objektreferenz oder nur die Zeichenfolge zu speichern, gibt es einen Unterschied? – EFO

0

Ich nehme an, Sie haben einen Tippfehler hier: cliente_id:client_id sollte cliente_id:cliente_id sein.

+0

habe ich überprüft und der Tippfehler war hier und nicht im Code. – EFO