ich zwei Schemata haben,tief Bestücken in Mungo
eine für Benutzer und eine andere für die Zeit nach
im Benutzerschema habe ich eine Eigenschaft für latestPost bekam die eine ObjectId eines wäre Eintrag in der Post-Schema
, wenn ich das Benutzerobjekt laden,
ich die lastestPost als Objekt erhalten möchten, dass der Autor die Benutzernamen aus dem Schema enthält, wo der Autor ist ein ObjectId, die ein Match würde _id Feld im Benutzerschema.
die Mungo-Tutorials scheinen die Syntax von
User.findOne({ _id: req.user.id})
.populate('latestPost')
.populate({ path: 'latestPost', populate: 'author'})
aber es funktioniert nicht
es zeigt
{ _id: 58f54fa51febfa307d02d356,
username: 'test',
email: '[email protected]',
firstName: 'test',
lastName: 'test',
__v: 0,
latestPost:
{ _id: 58f54fa51febfa307d02d357,
user: 58f54fa51febfa307d02d356,
author: 58f54fa51febfa307d02d356,
date: 2017-04-17T23:28:37.960Z,
post: 'Test',
__v: 0 } }
aber ich will es
latestPost:
{
author: {
username : something
}
}
zeigen, nicht zu verwenden,
Wie macht man so etwas? stimmt etwas mit dem Entwurf des Schemas oder der Abfrage nicht?
var UserSchema = new Schema({
username : String,
firstName : String,
lastName : String,
email : String,
password : String,
views : Number,
latestPost : { type: Schema.Types.ObjectId, ref: 'Post' }
});
var PostSchema = new Schema({
user : { type: Schema.Types.ObjectId, ref: 'User' },
author : { type: Schema.Types.ObjectId, ref: 'User' },
date : Date,
body : String
});
var User = mongoose.model('User', UserSchema);
var Post = mongoose.model('Post', PostSchema);
User.findOne({ _id: req.user.id})
.populate('latestPost')
.populate({ path: 'latestPost', populate: 'author'})
.exec(function(err, user) {
if (err) res.json(err)
console.log(user)
})
Warum sagt es "Bio" in Ihrer Ausgabe? – Mikey
Entschuldigung, alter Code. Aktualisierter Beitrag – totalnoob