2016-11-30 73 views
0

我有2种型号:架构协会猫鼬

下面是用户模型:

const userSchema = new mongoose.Schema({ 
    email: { type: String, unique: true, required: true }, 
    password: { type: String, required: true }, 
    passwordResetToken: String, 
    passwordResetExpires: Date, 

    facebook: String, 
    twitter: String, 
    tokens: Array, 

    profile: { 
    name: String, 
    gender: String, 
    location: String, 
    website: String, 
    picture: String 
    } 
}, { timestamps: true }); 

这里是复活型号:

const reviveSchema = new mongoose.Schema({ 
    reviveShowName: {type: String, required: true}, 
    reviveTitle: {type: String, required: true}, 
    reviveCategory: {type: String, required: true}, 
    reviveGoal: {type: Number, required: true}, 
    revivePhoto: {type: String, required: true}, 
    reviveVideo: {type: String}, 
    reviveStory: {type: String}, 
    author: { 
     id: { 
     type: mongoose.Schema.Types.ObjectId, 
     ref: "User" 
     }, 
     name: String 
    } 
}, { timestamps: true }); 

在复活模式,我米试图引用作者,并得到作者的ID和那个作品...我怎么也得到配置文件的名称 - >名称...?很显然name: String是错误的...

回答

3

猫鼬关系的工作,基于嵌套对象的reftype值。在您的情况下,您已将属性author关联到指向User模型。

如果你想填充author与用户的信息,你应该只是做:

author: {  
    type: mongoose.Schema.Types.ObjectId, 
    ref: "User" 
} 

然后在你的查询,你只需要使用填充

Revive.find({}) 
     .populate('author') 
     .exec(function(error, docs) { 
      console.log(docs); // will have `[{author:{profile:{...}}}]` data 
     });