Mungo Füllen Sie die Rückgabe von null oder undefiniert

Tut mir Leid, wenn dies eine n00b-Frage, ich habe Google-Suche & Stack für Stunden jetzt, und ich habe zu Fragen!

Habe ich zwei Schemata, Benutzer und Geschichte, siehe unten. Ich bin versucht, eine Referenz für Anwender, die eine Geschichte mit der Ref-option zum Auffüllen in der Abfrage habe ich mit Hilfe von mySQL vor und wollte so versuchen, Sie zu replizieren, die eine JOIN-Anweisung.
Immer wenn ich versuche zu verwenden, Auffüllen, bekomme ich nur die objectID zurückgegeben, oder null (siehe unten).

Bearbeitet 12 Nov-fix-IDs hardcoded & add-Konsole Daten

story-schema.js

var mongoose = require('mongoose'),
Schema = mongoose.Schema,
User = require('./user-schema');

var StorySchema = new Schema({  
title: { type: String, required: true },  
author_id: { type: Schema.Types.ObjectId, ref: 'User' },
summary: { type: String, required: true },
rating: { type: String, required: true }
});

module.exports = mongoose.model('Story', StorySchema, 'stories');

user-schema.js

var mongoose = require('mongoose'),
Schema = mongoose.Schema;

var UserSchema = new Schema({
    username: { type: String, required: true, index: { unique: true } },
    is_admin: {type: Boolean, required: true, default: false }
});

speichern - id hardcoded zum Beispiel

app.post('/api/new_story', function(req, res){
var story;
story = new Story({
    title: req.body.title,
    author_id: mongoose.Types.ObjectId(req.params._id), 
            /* ex of req.params._id: 527fc8ff241cdb8c09000003*/
    summary: req.body.summary,
    rating: req.body.rating
});

story.save(function(err) {
    if (!err) {
        return console.log("created");
    } else {
        return console.log(err);
    }
});
return res.send(story);
});

Beispiel Benutzer wenn Sie angemeldet terminal

{
"__v" : 0,
"_id" : ObjectId("527fc8ff241cdb8c09000003"),
"is_admin" : false,
"username" : "ted"
}

Beispiel-Geschichte, wenn Sie eingeloggt terminal

{
"title" : "Test Story",
"author_id" : "527fc8ff241cdb8c09000003",
"summary" : "Test summary",
"rating" : "12",
"_id" : ObjectId("52827692496c16070b000002"),
"__v" : 0
}

Abfragen

//other mongoose/app includes above
User = require('./config/schema/user-model'),
Story = require('./config/schema/story-model');

//data.author_id = 527fc8ff241cdb8c09000003 
//data.author_id.username = undefined
app.get('/api/query/:id', function (req, res){
return Story.findOne({_id:req.params.id})
.populate( { path: 'User' } )
.exec(function (err, data) {
            console.log(data.author_id);
            console.log(data.author_id.username);
          if (err) {
            return res.json({error:err})
          }
        })
});

//data.author_id = null 
app.get('/api/query2/:id', function (req, res){
return Story.findOne({_id:req.params.id}) //_id hardcoded for example
.populate( 'author_id' )
.exec(function (err, data) {
            console.log(data.author_id);
          if (err) {
            return res.json({error:err})
          }
        })
});

In der ersten Abfrage bekomme ich die author_id ich schon gespeichert, welche Art von Sinn macht, wie das ist, was ich gerettet - aber ich habe Zugriff auf den Benutzernamen.

In der zweiten Abfrage kann ich nicht einmal Zugriff auf die author_id hab ich schon gespeichert.

Edit: ich einen normalen GET-Abfrage gut ohne das 'Auffüllen'

, Was ich gerne sehen würde

Ist in der Lage sein, um den Zugriff auf die Autor-Informationen aus der Geschichte - das ist mehr so ein proof of concept.
Schließlich möchte ich Referenz die Geschichte _id in der die Benutzer-Modell, da es viele Geschichten, die eine Benutzer -, sondern nur ein Benutzer pro Geschichte, aber dachte, ich würde hier als erstes.

InformationsquelleAutor lucirebecca | 2013-11-11
Schreibe einen Kommentar