2017-01-09 42 views
1

我有两个模式设置:什么是使用猫鼬种群的正确方法?

var ClientSchema = new Schema({ 
    name: String 
}); 
module.exports = mongoose.model('Client', ClientSchema); 

而且

var PlaceSchema = new Schema({ 
    client: {type: mongoose.Schema.Types.ObjectId, ref: 'Client'}, 
    address: String 
}); 
module.exports = mongoose.model('Place', PlaceSchema); 

,如果我得到的地点清单,我可以很容易地填充客户端这样的:

Place.find({}).populate('client') 

但是,如果我想获得所有客户和他们所有的地方的清单,我将如何查询这个?我是否应该在返回响应之前简单地遍历所有客户并在Place.find({client:client._id)之前找到它的位置?

回答

0

这个数据结构只会以一种方式工作,PlaceSchema做参考ClientSchema但ClientSchema不必PlaceSchema任何引用,该解决方案将是确定你的ClientSchema这样:

var ClientSchema = new Schema({ 
    name: String, 
    _address: [{type: mongoose.Schema.Types.ObjectId, ref: 'Place'}] 
}); 

这似乎有点儿愚蠢的,但它会更容易为你的情况

0

那么,如果你有一些地方,他们将有自己的唯一ID,并为客户端连接到每个地方,你可以有一个placeId数组,每当客户端连接到这个地方时,将一个placeId推送到这个阵列。'

var ClientSchema = new Schema({ 
    name: String, 
    _address: [{type: mongoose.Schema.Types.ObjectId, ref: 'Place'}] 
});` 
相关问题