我是前端iOS开发者,而Mongoose对我来说是新手。我正在尝试将父类别嵌入子类别文档中。这是obj-c数据模型:
@interface CategorySub : MTLModel <MTLJSONSerializing>
@property (nonatomic) NSString* objectId;
@property (nonatomic) NSString* name;
@property (nonatomic) CategoryMain* categoryMain;
@end
这是Mongoose CategorySub
架构def:
var CategorySubSchema = new Schema({
name: { type: String },
_category_main : { type: String, ref: 'CategoryMain' }
},
{
collection: 'categories_sub'
}
)
CategoryMain
架构,现在只是一个名字:
var CategoryMainSchema = new Schema({
name: { type: String }
},
{
collection: 'categories_main'
}
)
这是相关的create
代码:
CategorySub.create({
name : req.body.name,
_category_main : req.body.category_main._id
}, function(err, data){
我在MongoUI中获取的CategorySub
文档之一是:
如何更改架构def和/或create
调用代码以在category_main
文档中嵌入CategorySub
?
答案 0 :(得分:0)
看起来您的创建代码只保存_id并使用dbref作为子文档的反对。这就是你只获取id而不是整个子文档的原因。
CategorySubSchema
.findOne({ name: 'YOUR NAME' })
.populate('_category_main') // <--
.exec(function (err, subdata) {
if (err)
console.log('The creator is %s', subdata.name);
})
请看这里:http://mongoosejs.com/docs/2.8.x/docs/populate.html
还有另一种方法是使用子文档。在你的情况下,它看起来像这样。:
var CategoryMainSchema = new Schema({
name: { type: String },
subCategories: [CategorySubSchema]
});
在创作案例中,您需要执行以下操作:
var categoryMain = new CategoryMainSchema({name: "sub doc", subCategories: [your sub document] });
请在此处查看文档:{{3}}
我希望有所帮助。