2017-06-04 3 views
0

Ich versuche derzeit, alle Dokumente zu finden, die einen bestimmten Wert von 'bar' im Schlüssel 'foo' haben. Verwenden von mongodb und nodejs.Find() Methode MongoDB mit Nodejs

Wenn ich versuche, dies auszuführen, bekomme ich: "TypeError: Kann nicht lesen Eigenschaft 'Suche' von undefined" Fehler zurück.

Wenn ich versuche, mit FindOne(), es wird nur das erste Dokument zurück, die das Dokument mit dem Wert „bar“ für den Schlüssel „foo“ hat, aber es gibt 3.

module.exports = function(app, db) { 

app.get('/foo', (req, res)=>{ 

db.collection('barCollection').find({foo: {$all: ['bar']}} 
,(err, item)=>{ 
if (err) { 
      res.send({'error':'An error has occurred'}); 
     } else { 
      res.send(item); 
     } 
    }); 
}); 
}; 

Dank

Antwort

1

Paul hat Recht, es gibt ein Problem in Ihrem Code, weshalb es null zurückgibt.

Hier versuchen Sie dieses Snippet. Ich benutze 2 Dateien für eine Demo.

model.js

const mongoose = require('mongoose'); 

mongoose.connect('mongo_url'); 
var barSchema = new mongoose.Schema({ 
    // your schema 
}); 

module.exports = mongoose.model('Bar', barSchema); 

main.js

var BarCollection = require('./models'); // assuming both files are in same directory. 

BarCollection.find({foo: {$all: ['bar']}} 
,(err, item)=>{ 
if (err) { 
      res.send({'error':'An error has occurred'}); 
     } else { 
      res.send(item); 
     } 
    }); 
}); 
}; 

Im Grunde, was ich hier versuche:

  1. separates MongoDB-Codemodell in separaten Dateien
  2. Mongo-Sammlung in API-Dateien für CRUD-Operationen importieren
+1

Guter Punkt für die Empfehlung von Mungo. Es ist der beste Weg nach Mongo, imo – Paul

+1

Es funktioniert! – rudster

+0

Froh, dass es funktioniert :) –

0

db.collection('barCollection') gibt aus irgendeinem Grund Null zurück. Sie müssen herausfinden, warum, es ist wahrscheinlich woanders in Ihrem Code, da Sie die Setup-Logik hier nicht haben.

Ich würde sehen, ob mongodb verbunden war richtig (dh ist der db Instanz, die Sie diese Funktion vorbei sind tatsächlich mit der Datenbank verbunden), ist mongodb Laufen und auf dem Port Sie es mit konfiguriert usw.

+0

Ich meine findOne() funktioniert sollte das nicht bedeuten, dass ich richtig verbunden bin? Vielen Dank – rudster

+0

Es sollte, aber dann ist etwas anderes in diesem Code anders. Der Fehler besagt, dass der Rückgabewert von DB.collection ('barCollection') nicht definiert ist. Das heißt, Sie versuchen, null.find() zu nennen, was natürlich unmöglich ist – Paul

+0

Jetzt bekomme ich einen anderen Fehler "TypeError: Konvertieren der kreisförmigen Struktur in JSON" Ich denke, das ist ein Schritt vorwärts, weil es verbindet, aber nicht angezeigt werden kann – rudster