2016-09-21 3 views
0

Ich habe ein Geschäft Objekt, das ich von mongodb, abgerufen Ich bin interessiert, den Wert store.comments zu verwenden.Knoten js gibt undefined von mongodb obejct inneren Wert

i Shop Wert protokolliert und es ist:

store:{ _id: 57e246f73e63d635cce3d174, 
    __v: 0, 
    comments: 57e246f73e63d635cce3d177, 
    loc: [ 105.832321, 105.233272 ], 
    name: '24 store', 
    reportedFalse: [], 
    products: [], 
    currentRanking: 
    { likes: 57e246f73e63d635cce3d175, 
    dislikes: 57e246f73e63d635cce3d176 }, 
    timePosted: Wed Sep 21 2016 11:38:15 GMT+0300 (Jerusalem Summer Time) }, 

dann i den Wert des Objekts Kommentare Wert angemeldet - result.comments:

store comments objectid: undefined 

und es scheint, wenn ich versuche, um später nach dem Kommentarwert zu suchen, dass es nicht gelingt, damit zu suchen. weil die Suche null zurückgibt, obwohl ich in meinem db sehen, dass ich in "Kommentare" table/schema mit der gleichen ID ....

Comments.findById(commentsId,function(commentsErr,commentsArrObj){ 
... 
cb(null, commentsArrObj._id); 
        } 

ein entsprechendes Objekt habe ich erhalten:

TypeError: Cannot read property '_id' of null 

herer Teil meines Schemas Referenz:

 name: String, 
     comments: mongoose.Schema.Types.ObjectId, // each comment has a object id - responder, link curl? crud? to his profile, profile pic, date time. 
     timePosted : { type: Date, default: Date.now }, 
     currentRanking: { 
      likes: mongoose.Schema.Types.ObjectId, // a votes document 
      dislikes: mongoose.Schema.Types.ObjectId // a votes document 
     }, 
+0

'comments' ist ** ObjectId **, so dass Sie nicht auf' comments._id' zugreifen können. – tmquang6805

+0

Hallo, danke. Die zweite Frage ist ziemlich dumm, ich suche tatsächlich nach einem Objekt und gebe seine _id zurück, es sollte immer noch funktionieren ... das Problem, das ich denke, ist auf der ersten Sache, die ich erwähnte, dass ich nicht auf result.comments zugreifen kann –

Antwort

1

In Ihrem Schema müssen Sie 'ref'

comments: mongoose.Schema.Types.ObjectId,ref:'comments'(modal name of comments) 
verwenden

Referenzschema verweisen und die Kommentare verwenden, um Kommentare zu erhalten.

+0

Danke, krank Versuch es. In welcher Abfrage kann ich auf das eigentliche Objekt zugreifen, sobald ich den Verweis habe? Nehmen wir an, dass die store.comments den ref ... enthält. Vielen Dank. ich habe darüber auch gelesen. –

0

Konsole das Fehlerobjekt "commentsErr" und dann überprüfen, was es druckt. Wenn Ihr commentsId-Typ in string geändert wird, ist dies möglicherweise der mögliche Grund, die Kommentare aus dem Schema nicht zu finden. Versuchen Sie, es in ObjectId zu konvertieren.

Verwendung:

Comments.findById(new mongoose.Types.ObjectId(id),function(commentsErr,commentsArrObj){ 
      cb(null, commentsArrObj._id); 
}) 

Vorschlag: Verwenden Sie Mungo Aufzeichnungen füllen ref verwenden, so dass Sie nicht benötigen separate Abfrage zu finden Kommentare zu bekommen.

Verwandte Themen