2015-09-11 190 views
0

我有场地,其中每个都有评论部分。每个评论都是一个Mongoose评论模式。每条评论都有一个创建者属性,这是一个用户模式。我正在尝试查找特定用户发布的所有评论。我怎样才能做到这一点?查询Mongoose模式。嵌套评论

var VenueSchema = new mongoose.Schema({ 
    comments: [{ 
    type : mongoose.Schema.Types.ObjectId, 
    ref: 'Comment', 
    default: [] 
    }] 
}, 
{minimize: false}); 

var CommentSchema = new mongoose.Schema({ 
    creator: { 
    type: mongoose.Schema.Types.ObjectId, 
    ref: 'User' 
    } 
}, {minimize: false}); 


var UserSchema = new mongoose.Schema({ 
    token: String, 
    venues: [{ //in case we want users to save their favorite venues 
    type : mongoose.Schema.Types.ObjectId, 
    ref: 'Venue' 
    }] 
}); 

我已经试过

Venue.find({ 
    "comments.creator": "55f1fa1263877ed0067b78c0" 
    }, function(err, docs) { 
    console.log(docs); 
    res.send(docs); 
    }) 

但它返回一个空数组。 “55f1fa1263877ed0067b78c0”是样本创建者_id。提前致谢!

回答

0

无法搜索creater其ID内Venue收藏因为它只收集Comment ID。因此,为了通过其ID进行搜索creater您需要更改如下图所示:

var VenueSchema = new mongoose.Schema({ 
    comments: [CommentSchema] 
}, 
{minimize: false}); 

var CommentSchema = new mongoose.Schema({ 
    creator: { 
    type: mongoose.Schema.Types.ObjectId, 
    ref: 'User' 
    } 
}, {minimize: false}); 


var UserSchema = new mongoose.Schema({ 
    token: String, 
    venues: [{ //in case we want users to save their favorite venues 
    type : mongoose.Schema.Types.ObjectId, 
    ref: 'Venue' 
    }] 
}); 
0

由于venueSchema只存储裁判的意见(这是注释_id),您将无法使用场地模型来查询评论。您可以将评论文件嵌入场地模式的评论数组中。

或者

使用注释模型如下只需查询该意见收集

Comment.find({ 
    "creator": "55f1fa1263877ed0067b78c0" 
    }, function(err, docs) { 
    console.log(docs); 
    res.send(docs); 
    })