2016-07-22 4 views
0

Ich versuche, einen Datensatz auf Mongo mit dem _id der Sammlung zu finden. Ich gebe die _id, ich habe es als String und als ObjectId versucht, und niemand arbeitet. Was merkwürdig ist, ist, dass es mit findOne einen völlig anderen Datensatz mit einer anderen _id zurückgibt. Wenn ich nur suche, mit einem WHERE, alle Datensätze erhält, filtert es überhaupt nichts.Sails.js mit Mongo kann von _id nicht gefunden werden

Wenn ich mit einem anderen Feld suche, dann funktioniert es und bekommt den richtigen Datensatz, aber ich möchte es mit dem Feld _id tun. Dies ist, was ich bisher versucht:

MyModel.findOne({where: {_id: new ObjectId("57926086e2a4ff010eeb8c83")}}).exec(function (err, record){ 
    //record completely different 
}); 

MyModel.findOne({where: {_id:"57926086e2a4ff010eeb8c83"}}).exec(function (err, record){ 
    //record completely different 
}); 

MyModel.findOne({id: new ObjectId("57926086e2a4ff010eeb8c83")}).exec(function (err, record){ 
    //record completely different 
}); 

MyModel.findOne({id:"57926086e2a4ff010eeb8c83"}).exec(function (err, record){ 
    //record completely different 
}); 

Also, was mache ich falsch ?, ich kann es nicht herausgefunden. Ich weiß (denke), dass ich es mit "nativ" machen kann, aber ist das der einzige Weg ???

Dank!

+0

Verwenden Sie Mongoose oder verwenden Sie Waterline? – robertklep

+0

@robertklep Hummm, wie kann ich das wissen? In connection.js habe ich gerade den Section someMongodbServer mit Adapter sails-mongo konfiguriert. – Laerion

+0

In diesem Fall denke ich, dass Sie Waterline verwenden (mit dem ich keine Erfahrung habe). Das "Mungo" -Tag verwirrte mich, daher die Frage. – robertklep

Antwort

2

Basierend auf meiner Erfahrung mit unserer sails.js App sollte nur Ihre letzte Option funktionieren.

  • Bei der Verwendung von sails.js und Wasserlinie, haben Sie id und NICHT _id (die letzte Option) zu verwenden.
  • Wenn Sie native MongoDB-Aufrufe über Waterline verwenden, müssen Sie _id und new ObjectId() (den Abfrageparameter in Ihrer ersten Option) verwenden.
+0

Ja, das ist seltsam, aber ich habe meine letzte Option nach dem Post erneut versucht, und es funktioniert! also weiß nicht, was vor ging, das hat nicht funktioniert ... was auch immer, es funktioniert jetzt und mit der letzten Option :) danke, dass du mich in die richtige Richtung gelenkt hast! – Laerion

Verwandte Themen