2016-08-26 7 views
0

Ich habe ein Schema in userref.js definiertMongoose finde die Arbeit nicht mit ObjectId

module.exports = (function userref() { 

    var Schema = mongoose.Schema; 

var newSchema= new Schema([{ 

     userId: { 
      type: mongoose.Schema.Types.ObjectId, 
      ref: 'User', 
      index: true 
     }, 
       value: { type: Number } 

    }]); 

    var results = mongoose.model('UserRef', newSchema); 

    return results; 

})(); 

Ich habe einige Daten eingefügt und wenn ich versuche, einige Daten zu holen ich die richtigen Werte von mongodb Konsole

db.getCollection('userrefs').find({'userId':ObjectId('57a48fa57429b91000e224a6')}) 
bin immer

Es gibt richtig einige Daten

Jetzt Problem ist, dass wenn ich versuche, einige Daten in Code zu holen, indem ich objectId leeres Array bin immer. In unten Funktion userrefs wird als leeres Array zurückgegeben

//req.params.userId=57a48fa57429b91000e224a6 
var UserRef = require('../userref.js'); 
this.getuserref = function (req, res, next) { 

     try { 
      var o_userId =mongoose.Types.ObjectId(req.params.userId); 
      var query = { userId: o_userId }; 
      var projection = '_id userId value'; 

      UserRef.find(query, projection, function (err, usrrefs) { 
       if (err) return next(err); 
       res.send(usrrefs); 
       console.log("userref fetched Properly"); 
      }); 
     } catch (err) { 
      console.log('Error While Fetching ' + err); 
      return next(err); 
     } 
    }; 

Auch wenn ich Code debuggen kann ich o_userId als objectId mit id-Wert als einige Junk-Zeichen

o_userId: ObjectID 
_bsontype: "ObjectID" 
id: "W¤¥t)¹â$¦" 
+0

Sie benötigen eine Reihe von userId in einem einzigen Dokument? oder eine userId pro Dokument? –

+0

Ich bekomme Emty-Array von Code – anand

+0

Haben Sie versucht, ohne auf ObjectId zu werfen, wie Mungoose das für Sie intern tut d. H. 'Var query = {userId: req.params.userId};'? – chridam

Antwort

0

Fügen Sie den Export wie folgt

module.exports.modelname= mongoose.model('userrefs', nameofschema, 'userrefs');  

var z = require('../userref.js'); 

var UserRef = z.modelname; 
sehen

Jetzt mit UserRef aufrufen.

Versuchen Sie einfach diesen Mann.

Model.find({ 'userId': objectidvariable}, '_id userid etc', function (err, docs) { 
     // docs is an array 
    }); 

Referenzbeispiel aus ihrem offiziellen Dokument kopiert.

+0

wie ObjektID-Variable aus einer Zeichenfolge in req.params.userid erstellt werden – anand

+0

Objectidvariable ist gut, in Zeichenfolgenformat zu gehen. Übergeben Sie einfach die tatsächliche Objekt-ID im String-Format. wie '123ahehadh13123h' = das ist meine Objekt ID zum Beispiel. einfach 'var objectidvariable = '12312313asdad';' –

+0

@ Alien01 Ich habe das Problem gefunden, ich denke, es geht nicht um die Abfrage selbst, es geht darum, wie Sie abfragen. –

0

Versuchen Sie folgendes:

try { 
     var o_userId =mongoose.Types.ObjectId(req.params.userId); 
     var query = { userId: o_userId }; 
     var projection = '_id $.userId $.value'; 

     UserRef.find(query, projection, function (err, usrrefs) { 
      if (err) return next(err); 
      res.send(usrrefs); 
      console.log("userref fetched Properly"); 
     }); 
    } catch (err) { 
     console.log('Error While Fetching ' + err); 
     return next(err); 
    } 
+0

seine immer noch leeren Array geben – anand

+0

versuchen '" userId ": o_userId' anstelle von' userId: o_userId' –

+0

versuchte dies auch :(funktioniert nicht – anand

Verwandte Themen